2017-11-26 13 views
0

NodeJS経由でAzure Blobストレージにファイルをアップロードします。これまでは、ファイルをexpress-fileupload経由でサーバーにアップロードし、ディスクに保存してからAzureブロブストレージにアップロードしました。 Azureにファイルをアップロードする前に、Azureにファイルをアップロードします。つまり、サーバーディスクに保存しないでください。NodeJSとexpress-fileuploadを使ってサーバーにファイルをアップロードしAzureクラウドに直接ストリームします

router.post('/upload', function(req, res) { 
    "use strict" 
    if (!req.files) 
     return res.status(400).send('No files were uploaded.'); 

    // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file 
    let context = req.files.context; 
let filenameContext = req.files.context.name; 

    context.mv('../'+filenameContext, function(err) { 
    if (err) 
     return res.status(500).send(err); 
    else { 
     blobSvc.createBlockBlobFromStream(containerName, filenameContext, context, function(error, result, response){ 
      if(!error){ 
       console.log(filenameContext+" stored in blob"); 
       fs.unlink('../'+filenameContext, function() { 
        if (err) throw err; 
       }); 
      } else { 
       console.error(filenameContext+" storing in blob failed"); 
      } 
     }); 
    } 
}); 

最初のサーバーのディスク上のファイルを保存せずにcreateBlockBlobFromStreamメソッドを使用するストリームに直接アップロードされたファイルを有効にする方法:これは私が今までに使用する方法ですか?

答えて

1

私の代わりにcreateBlockBlobFromTextを使用してお勧めします:

app.post('/upload', function(req, res) { 
    if (!req.files) 
     return res.status(400).send('No files were uploaded.'); 

    let data = req.files.context.data; 
    let filename = req.files.context.name;  

    blobSvc.createBlockBlobFromText(containerName, filename, data, function(err) { 
     if (err) 
      return res.status(500).send(err); 

     res.send('File uploaded!'); 
    }) 
}) 
+0

美しい、単純な答えを。私が必要なものすべて、ありがとう – Noltibus

関連する問題