我正在实现对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
答案 0 :(得分:0)
首先,您需要将传入的multipart/form-data
解析为流。您可以使用connect-busbody来执行此操作。有关详细信息,请参阅Mick Cullen的answer。
其次,使用createWriteStreamToBlockBlob
而不是createBlockBlobFromLocalFile
来提供要写入块blob的流。带有azure-storage的node.js示例代码可以查看my earlier post。