当您到达给定的 Azure Function 端点时,我想从 Blob 存储返回一个文件。该文件是二进制数据。
根据 Azure 存储 Blob 文档,最相关的调用如下所示,因为它是唯一不需要将文件写入临时文件的调用:
获取Blob到Stream
但是,此调用获取 Blob 并将其写入流。
Azure Functions 有没有办法使用 Stream 作为 res.body 的值,以便我可以从存储中获取 Blob 内容并立即将其写入响应?
要添加一些代码,尝试让这样的东西工作:
'use strict';
const azure = require('azure-storage'),
stream = require('stream');
const BLOB_CONTAINER = 'DeContainer';
module.exports = function(context){
var file = context.bindingData.file;
var blobService = azure.createBlobService();
var outputStream = new stream.Writable();
blobService.getBlobToStream(BLOB_CONTAINER, file, outputStream, function(error, serverBlob) {
if(error) {
FileNotFound(context);
} else {
context.res = {
status: 200,
headers: {
},
isRaw: true,
body : outputStream
};
context.done();
}
});
}
function FileNotFound(context){
context.res = {
status: 404,
headers: {
"Content-Type" : "application/json"
},
body : { "Message" : "No esta aqui!."}
};
context.done();
}
最佳答案
不幸的是,我们还没有在 NodeJS 中实现流支持 - 它正在积压中:https://github.com/Azure/azure-webjobs-sdk-script/issues/1361
如果您不依赖于使用 C# 函数的 NodeJ,则可以直接在输入绑定(bind)和流请求输出中使用存储 sdk 对象,而不是使用中间对象方法。
关于node.js - Azure Functions - NodeJS - 响应正文作为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810082/