2015-09-20 151 views
0

根據這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」,這攪亂了二進制數據。

+0

可能你需要提供Content-Type標題,說它是一個圖像。看看那篇文章:http://stackoverflow.com/questions/15450102/create-thumbnail-image-using-windows-azure-blob-storage –

+0

我也想知道,但我想作爲內容 - 類型? – newman

+0

我試圖添加options = {contentType:'image/jpeg',contentTypeHeader:'image/jpeg'},但它沒有幫助。 – newman

回答

0

爲了闡明版本問題,提到的版本timm是「azure」模塊的版本。現在Azure存儲SDK與「azure-storage」模塊一起發佈。 使用最新模塊可能會解決您的問題。

+0

感謝您的澄清。 – newman