根据这post,这应该是可能的。但是,我无法让它工作。一个令人困惑的部分是,我是否正在使用Azure存储的正确版本?在那篇文章中,timm说一年前使用createBlockBlobFromText将二进制数据保存到azure blob存储?
这是在0.9.x发布的。
但是,没有0.9的版本。最新的azure存储是0.6.0。
这里是我的服务器代码(node.js中):
var buf = new Buffer(upd.picture, 'binary');
blobService.createBlockBlobFromText(containerName, fileName, buf, function (error, result, response) {
});
在客户端(angular.js),二进制数据被读取这样的:
var file = document.getElementById('file').files[0];
var reader = new FileReader();
reader.onloadend = function (e) {
upd.picture = e.target.result;
....
}
reader.readAsBinaryString(file);
对于我的测试,我上传了一张jpg图像,保存在azure blob中的文件无法在网络浏览器中显示。但是,如果我使用createBlockBlobFromLocalFile来上传文件,它将起作用。我做错了什么?
UPDATE:
好吧,我终于想通了。我只需要改变上述一行
var buf = new Buffer(upd.picture.substr(23), 'base64');
的问题是,该文件已经转换与头based64“数据:图像/ JPEG; BASE64”,这搅乱了二进制数据。
可能你需要提供Content-Type标题,说它是一个图像。看看那篇文章:http://stackoverflow.com/questions/15450102/create-thumbnail-image-using-windows-azure-blob-storage –
我也想知道,但我想作为内容 - 类型? – newman
我试图添加options = {contentType:'image/jpeg',contentTypeHeader:'image/jpeg'},但它没有帮助。 – newman