2017-11-26 10 views
0

NodeJS를 통해 Azure Blob 저장소에 파일을 업로드하고 싶습니다. 지금까지 파일을 express-fileupload을 통해 내 서버에 업로드하면 파일이 디스크에 저장되고 Azure blob 저장소에 업로드됩니다. 이제 파일을 업로드하는 동안 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