我想从Microsoft Azure blob存储容器中检索图像的二进制数据。
我已使用AZSCloudBlobContainer上的以下功能从iOS应用程序成功将图像上传到Azure上的存储容器。
blockBlob.uploadFromData(imageData, completionHandler:
我也可以使用AZSCloudBlob上的以下功能将其直接下载到iOS应用程序。
blockBlob.downloadToDataWithCompletionHandler({(error: NSError?, data: NSData?)
我遇到的问题是我希望能够从node.js服务器端脚本中检索图像,而不是直接从应用程序中检索图像。除此之外,我尝试了以下代码......
var containerName = 'containerName';
var blobService = storage.createBlobService(accountName, accountKey);
var blobName = 'blobname';
var fs = require('fs');
var stream = fs.createWriteStream('output.txt');
blobService.getBlobToStream(containerName, blobName, stream, function (error, result, response2) {
response.json(result);
});
响应检索blob信息,但我不知道如何获取图像的实际二进制数据?
({
blobType = BlockBlob;
container = containername;
contentLength = 14593;
contentSettings = {
contentType = "application/octet-stream";
};
etag = "\"0x8D********\"";
lastModified = "Mon, 05 Sep 2016 18:57:41 GMT";
lease = {
state = available;
status = unlocked;
};
metadata = {
};
name = "blobname";
requestId = "ce3e7************";
serverEncrypted = false;
})
我也尝试了很多其他途径,但我对node.js完全不熟悉,并且花了太多时间试图解决这个问题,任何方向都会非常感谢,谢谢。
答案 0 :(得分:1)
由于Node.js中的Azure移动应用程序基于Expressjs,其response
中间件是一种可写流,您可以利用函数getBlobToStream()
直接将内容流发送到客户方。 E.G。
module.exports = {
"get": function (req, res, next) {
var azure = require('azure-storage');
var blobsrv = azure.createBlobService(
'<storage_account>',
'<storage_key>'
)
blobsrv.getBlobToStream('<container>', '<blob>', res, function (error, result) {})
}
}
您可以通过api http://<your_mobile_app_name>.azurewebsites.net/api/<api_name>