【发布时间】:2018-10-07 09:29:17
【问题描述】:
我已成功将我的 base64 (DATA_URI) 图像转换为 blob,但无法将其还原。
我的 base64 到 blob 代码如下所示,更多信息请看link。
b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, {type: contentType});
return blob;
}
我正在尝试将我的 blob 转换为 base64,但出现错误
错误类型错误:无法在“FileReader”上执行“readAsDataURL”:参数 1 不是“Blob”类型。
我正在调用成功回调,但无法理解这一点
这是我尝试将 blob 转换为 base64 的代码
if(window.FileReader) {
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
var base64data = reader.result;
console.log(base64data);
}
}
调试时我看不到 reader.onloadend 它为空,我无法调用它。
有什么帮助吗??
【问题讨论】:
-
如何构造要传递给
reader.readAsDataURL()的blob? -
如果您手头只有字符串
"1524751188817_blob",我不确定您能否从中得到Blob。您正在使用的函数b64toBlob期望第一个参数是base64 编码的字符串。 -
@haim770 实际上这是错误的,其中我提到作为字符串数组的 blob 实际结果显示文件类似于
ØÿàJFIFHHÿáXExifMM*‡i& À Ðÿí8Photoshop 3.08BIM8BIM%ÔŒÙ²é€ ˜ìøB~ÿÀÐÀ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br,.... -
我得到了我的 Api 响应,因为 _body 给了我一些类似 streemed 数据的 blob/文件字符串
标签: javascript angularjs base64 ionic3 blob