从自定义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。
- 让wordpress在azure节点站点的子目录中运行
- Node.js在本地工作,但远程返回“不良请求”
- TypeError:client.getReceiver不是azure-iot-device-http示例中的函数
- Cordova Azure – 错误请求 – types错误:无法读取未定义的属性'listRegistrationsByTag'
- 如果将节点应用程序埋在回购目录中,如何将节点应用程序部署到azure色
- 在Windows Azure模拟器中运行的Node.js Web应用程序
- 测量Websocket性能的工具
- Azure Blob存储哈希不匹配(完整性检查失败)
- Windows Azure中的node.js应用程序部署