我正在实施将处理请求的 API - 其中之一是 POST 将存储在其中的图像文件(例如:jpg),我必须将其上传到 azure 存储。
我找到了模块,如果以流或文本形式呈现,它将允许将字段放入存储中(似乎如此,我无法尝试它)(因此,可能与流一起使用)
天蓝色存储
然后我使用 Postman 发送带有文件的请求:(发送多部分/表单数据请求的工具)
但是现在,在请求的主体中,只有大量难以理解的字符(看起来不错,因为它是图像),但是我现在坚持了 - 我不知道如何从 reuqest 获取该文件并将其传递给模块的函数?
还有一些代码:
route.route('/photo')
.post(
(req, res) => {
upload(req);
})
和部分upload(request)
功能(现在使用本地文件通过功能实现,所以我可以测试它是否与给定的连接一起工作 - 确实如此!):
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:我设法获得了我必须处理的“部分”请求:
Content-Disposition: form-data; name="image"; filename="71127.jpeg"
Content-Type: image/jpeg
首先,您需要解析传入multipart/form-data
的流。您可以使用connect-busbody来做到这一点。有关更多信息,请参阅 Mick Cullen 的回答。
其次,使用createWriteStreamToBlockBlob
而不是createBlockBlobFromLocalFile
提供写入块 blob 的流。带有azure-storage 的node.js 示例代码,您可以查看我之前的帖子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句