我有一个网络应用程序,它在本地保存图像,直到它们准备好发送到服务器。当我在本地保存图像时,我对它们进行 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 事件从未被触发并且没有错误。一旦我得到图像,我上传它就不会遇到问题。有什么想法吗?
谢谢!
最佳答案
不熟悉 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?
看来您可以对 Web Kit 浏览器使用 btoa() 和 atob()。
关于javascript - 解码base64图像并上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886308/