2013-02-15 90 views
1

我有一個web應用程序在本地保存圖像,直到它們準備發送到服務器。當我在本地保存圖像時,我使用base64對它們進行編碼。現在我想用這些圖像做一個多部分文件上傳。解碼base64圖像並上傳

所以我需要將圖像轉換回二進制形式。我試過使用FileReader將其轉換回來,

var fr = new FileReader(); 
fr.onloadend = function(binaryImage){ 
    debugger; 
    binaryImage; 
}; 
var base64Str = item.base64Image.substr(item.base64Image.indexOf("base64") + 7); 
//var base64Str = item.base64Image; 
fr.readAsBinaryString(base64Str); 

但是onloadend事件永遠不會被解僱,並且沒有錯誤。一旦我得到圖像,我不會有麻煩上傳它。有任何想法嗎?

謝謝!

回答

1

不熟悉FileReader,但我相信readAsBinaryString期待Blob或File對象。傳遞一個字符串會導致我的錯誤。試試這個:

var fr = new FileReader(); 
fr.onloadend = function(binaryImage){ 
    debugger; 
    binaryImage; 
}; 
var blob = new Blob([item.base64Image. 
          substr(item.base64Image.indexOf("base64") + 7)]); 
fr.readAsBinaryString(blob); 

我不認爲這會給你想要的。看看這篇文章的方法來編碼/解碼Base64:How can you encode to Base64 using Javascript?

看起來像你可以使用btoa()和atob()的網頁瀏覽器。