我有一个nodejs应用程序在Azure云服务中作为辅助角色运行,其中我有两个blob存储容器,应用程序将在响应某些用户请求时读取这些容器。
这是我的设置:
使用azure-storage包与我的blob存储接口
两个容器,每个容器包含用户可能在某些时候要求的不同类型的文件。
我使用以下代码将文件流式传输到HTTP响应:
exports.getBlobToStream = function(containerName, fileName, res) {
var blobService = azure.createBlobService();
blobService.getBlobProperties(containerName, fileName, function(error, properties, status){
if(error || !status.isSuccessful)
{
res.header('Content-Type', "text/plain");
res.status(404).send("File " + fileName + " not found");
}
else
{
res.header('Content-Type', properties.contentType);
res.header('Content-Disposition', 'attachment; filename=' + fileName);
blobService.createReadStream(containerName, fileName).pipe(res);
}
});
};
一个重要的
在过去,我从任何一个容器中读取都没有问题。在我对这个问题的研究中,我在这里找到了一个相同(但过时)的全方位azure-sdk-for-node问题https://github.com/Azure/azure-sdk-for-node/issues/434。解决这个问题的解决方案也解决了我的问题,但我不明白为什么。特别是当我可以从同一个应用程序中读取其他容器并使用相同的代码时没有任何问题。
我可以接受解决方案,但想了解发生了什么。有什么想法或建议吗?
答案 0 :(得分:0)
@winsome,谢谢你向我们提出这个问题。如果设置EMULATED,则表示代码将调用除真实存储帐户以外的本地存储模拟器,并且预计会失败。关于一个容器在EMULATED下工作,猜测是你的本地存储模拟器也有一个相同的容器。请检查。