解码base64图像并上传

时间:2013-02-15 00:04:21

标签: javascript base64

我有一个webapp,它在本地保存图像,直到它们准备好发送到服务器。当我在本地保存图像时,我对它们进行了64位编码。现在我想用这些图像上传多部分文件。

所以我需要将图像转换回二进制形式。我已经尝试过使用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 个答案:

答案 0 :(得分: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()用于Web工具包浏览器。