从请求中读取文件并将其上传到存储

时间:2017-04-04 12:26:13

标签: javascript backend azure-storage-blobs

我正在实现对handel请求有用的API - 其中一个是POST将存储在其中的图像文件(例如:jpg),我将不得不上传到azure存储。

我找到了模块,如果以流或文本形式出现(那么,可能会以流式传输),那么将把fiels放入存储(看起来如此,我无法尝试)#/ p>

  

天青存储

然后我使用Postman发送带文件的请求: ( Tool for sending multipart/form-data request

但现在,在请求的主体中只有大量难以理解的追逐者(似乎没问题,因为它是图像),但我现在坚持了 - 我不知道如何从reuqest获取该文件并通过它模块的功能?

更多代码:

route.route('/photo')
    .post(
    (req, res) => {
            upload(req);
    })

upload(request)函数的一部分(现在使用本地文件的fucntion实现,所以我可以测试它是否与给定的连接一起工作 - 它确实!):

process.env.AZURE_STORAGE_CONNECTION_STRING = 'MyConnectionString'
upload(request) {

        blobService.createBlockBlobFromLocalFile(
            ContaienrName,
            FileNameInContainer,
            'D:\\My\\Path\\To\\image.jpg', 
            function (error, result, response) {
                if (!error) {
                    console.log(' >> File uploaded!');
                }
                else {
                    console.log(' >> File NOT uploaded!');
                }
                console.log(' >> --------------------');
                console.log(' >> ERROR : ');
                console.log(error);
                console.log(' >> --------------------');
                console.log(' >> RESULT : ');
                console.log(result);
                console.log(' >> --------------------');
                console.log(' >> RESPONSE : ');
                console.log(response);
                console.log(' >> --------------------');

                resolve(resultReturning);
            }
        );
}

编辑#1: 我设法得到了" part"要求我对汉德尔的行为表示不满:

Content-Disposition: form-data; name="image"; filename="71127.jpeg"
Content-Type: image/jpeg

1 个答案:

答案 0 :(得分:0)

首先,您需要将传入的multipart/form-data解析为流。您可以使用connect-busbody来执行此操作。有关详细信息,请参阅Mick Cullen的answer

其次,使用createWriteStreamToBlockBlob而不是createBlockBlobFromLocalFile来提供要写入块blob的流。带有azure-storage的node.js示例代码可以查看my earlier post