从自定义node.js API中检索Azure Blob

我想从Microsoft Azure blob存储容器中检索图像的二进制数据。

我已经使用AZSCloudBlobContainer上的以下function,从iOS应用程序成功地将图像上传到Azure上的存储容器。

blockBlob.uploadFromData(imageData, completionHandler: 

我也可以使用AZSCloudBlob上的以下function直接将其成功下载到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完全陌生,花费了太多的时间来解决这个问题,任何方向都将非常感谢,谢谢。

由于Node.js中的Azure移动应用基于Expressjs ,其response中间件是一种可写的stream,您可以利用getBlobToStream()函数直接将内容stream发送到客户端。 例如

 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>的URL直接浏览自定义API来testingfunction。