gpt4 book ai didi

javascript - 在 JavaScript 中将 Blob 转换为 Base64

转载 作者:行者123 更新时间:2023-11-29 10:59:30 25 4
gpt4 key购买 nike

我已成功将我的 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,但出现错误

ERROR TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.

这是我对取回我的 blob 图像资源的回复 link

我正在调用成功回调但无法理解这一点

这是我尝试将 blob 转换为 base64 的代码

if(window.FileReader) {
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
var base64data = reader.result;
console.log(base64data);
}
}

调试时我看不到 reader.onloadend 它是 null 并且我无法调用它。

有什么帮助吗??

最佳答案

我相信您需要在开始读取数据之前定义onloadend。它很可能在您分配之前完成读取并触发空函数。或者更准确地说,在您调用 readAsDataURL 时,onloadendnull

var reader = new FileReader();
reader.onloadend = () => {
var base64data = reader.result;
console.log(base64data);
}

reader.readAsDataURL(blob);

关于javascript - 在 JavaScript 中将 Blob 转换为 Base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50047088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com