使用NodeJS和express-fileupload将文件上传到服务器,并直接将其传输到Azure云

时间:2017-11-26 15:07:47

标签: node.js azure express file-upload

我想通过NodeJS将文件上传到我的Azure Blob存储。到目前为止,我通过express-fileupload将文件上传到我的服务器,它们存储在磁盘上,然后上传到Azure blob存储。现在我想在上传文件时将文件上传到Azure,即在将文件上传到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方法,而无需先将文件存储在服务器磁盘上?

0 个答案:

没有答案