根據這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