2013-02-15 92 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()的网页浏览器。