0
var BlobSerivceClient = require('@azure/storage-blob');
var multipart = require('parse-multipart');
const AZURE_STORAGE_CONNECTION_STRING = process.env["connectionstringstoragepath"]

module.exports = async function (context, req) {
    context.log('Javascript HTTP trigger function processed a request '+multipart+" "+AZURE_STORAGE_CONNECTION_STRING+" "+blobSerivceClienttop);
    var bodyBuffer = Buffer.from(req.body);
    var boundary = multipart.getBoundary(req.headers['content-type']);

    var parts = multipart.Parse(bodyBuffer, boundary);
    const blobSerivceClient = await BlobSerivceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING);

    const container = "bankfeedsdbfiles";
    const containerClient = await blobSerivceClient.getContainerClient(container);
    
    const blobName = parts[0].filename;

    const blockBlobClient = containerClient.getBlockBlobClient(blobName);
    const uploadblobResponse = await blockBlobClient.upload(parts[0].data, parts[0].data.length);

    context.res = {body: {name: parts[0].filename, type: parts[0].type, data: parts[0].data.length}};
    context.done();
} 

The above is my code and I get error like below :

2021-12-27T09:49:25.507 [Error] Executed 'Functions.dbfilesupload' (Failed, Id=fa953980-82b2-4c95-a13e-13988fd1c67e, Duration=240ms)Result: FailureException: TypeError: blobSerivceClienttop.fromConnectionString is not a functionStack: TypeError: blobSerivceClienttop.fromConnectionString is not a functionat module.exports (D:\home\site\wwwroot\dbfilesupload\index.js:13:58)at t.WorkerChannel.invocationRequest (D:\Program Files (x86)\SiteExtensions\Functions\4.0.1\workers\node\worker-bundle.js:2:16866)at c. (D:\Program Files (x86)\SiteExtensions\Functions\4.0.1\workers\node\worker-bundle.js:2:13767)at c.emit (events.js:400:28)at addChunk (internal/streams/readable.js:293:12)at readableAddChunk (internal/streams/readable.js:267:9)at c.Readable.push (internal/streams/readable.js:206:10)at Object.onReceiveMessage (D:\Program Files (x86)\SiteExtensions\Functions\4.0.1\workers\node\worker-bundle.js:2:66126)at Object.onReceiveMessage (D:\Program Files (x86)\SiteExtensions\Functions\4.0.1\workers\node\worker-bundle.js:2:58414)at D:\Program Files (x86)\SiteExtensions\Functions\4.0.1\workers\node\worker-bundle.js:2:32555. Also I have install pakages for @azure/storage-blob and parse-multipart

Ansuman Bal
  • 9,705
  • 2
  • 10
  • 27
  • I wonder what went wrong. The stacktrace which has `blobSerivceClienttop` doesn't match your code: blobSerivceClienttop.fromConnectionString is not a function but in your code you have `BlobSerivceClient.fromConnectionString` const blobSerivceClient = await BlobSerivceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING); where `await` is not useful BTW as the function does not return a promise const blobSerivceClient = BlobSerivceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING); – Jeremy Meng Dec 28 '21 at 00:33

1 Answers1

-1

I tried this read the multiple files local system for testing purpose you can try with passing your data and try with removing blobSerivceClienttop in your code

const { BlobServiceClient } = require('@azure/storage-blob');


const blobServiceClient = BlobServiceClient.fromConnectionString("Connection string");

// Create a unique name for the container


console.log('\nCreating container...');


var fs = require('fs');
async = require('async');
  
var dirPath = local file path'; //provice here your path to dir

fs.readdir(dirPath, function (err, filesPath) {
    if (err) throw err;
    filesPath = filesPath.map(function(filePath){ //generating paths to file
        console.log(dirPath+filePath);
       
       
        return dirPath + filePath;
        
    });
    async.map(filesPath, function(filePath, cb){ //reading files or dir
        fs.readFile(filePath, 'utf8', cb);
    }, function(err, results) {
        for (var i = 0; i < results.length; i++){
            const containerClient = blobServiceClient.getContainerClient("test");
            const blockBlobClient = containerClient.getBlockBlobClient(filesPath[i]);
            blockBlobClient.upload(results[i],results[i].length);
            console.log("HIIIIIIIIIIIIIIIiiiiii")
        console.log(results[i]);
        } //this is state when all files are completely read
       
    });
});

enter image description here

ShrutiJoshi-MT
  • 1,622
  • 1
  • 4
  • 9
  • If answer helps, you can accept it as answer( click on the check mark beside the answer to toggle it from greyed out to filled in.). This can be beneficial to other community members. Thank you – ShrutiJoshi-MT Jan 07 '22 at 05:09