1

我有一个 web 应用程序在本地保存图像,直到它们准备好发送到服务器。当我在本地保存图像时,我对它们进行 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 事件并且没有错误。一旦我得到图像,我将不会有上传它的问题。有任何想法吗?

谢谢!

4

1 回答 1

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 的方法: 如何使用 Javascript 编码为 Base64?

看起来您可以将 btoa() 和 atob() 用于 Web 工具包浏览器。

于 2013-02-15T02:02:44.023 回答