javascript - 解码base64图像并上传

标签 javascript 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 事件从未被触发并且没有错误。一旦我得到图像,我上传它就不会遇到问题。有什么想法吗?

谢谢!

最佳答案

不熟悉 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/

相关文章:

javascript - onclick 和外部 js 文件

javascript - 使用 javascript 从 Knockout.Js 读取 Json 数据

java - 在Java中解码base64Url

javascript - 将图像绘制到 Canvas 并通过 base64 对其进行编码

java - 在java中将base64字符串转换为服务器端的图像

javascript - 通过 Google 地方信息显示当前位置

javascript - 等待图像加载后再继续

javascript - 如果再次单击父元素,则保持未折叠的元素打开

php - laravel rest api 上传文件到服务器

javascript - 通过ajax向服务器发送base64图像