JavaScript reader.readAsDataURL() returns "undefined"
JavaScript reader.readAsDataURL() returns "undefined"
在过去的几个小时里,我一直在尝试寻找一种使用 JavaScript 对二进制数据进行 Base64 编码的方法,结果发现 btoa()
只适用于字符串,所以我想出了以下代码,其中 blob
是我需要编码的文件:
function base64Encode(blob) {
var reader = new FileReader();
reader.readAsDataURL(blob)
reader.onloadend = function() {
console.log(reader.result);
};
};
问题是,base64Encode(blob)
总是 returns undefined
,有人知道解决办法吗?
你没有从你的函数返回任何东西,你可以使用 promises 和 async/await。作为示例,请参见下面的代码,它可能会对您有所帮助。
const convertBlobToBase64 = async (blob) => {
return await blobToBase64(blob);
}
const blobToBase64 = blob => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
来电者:
console.log(await convertBlobToBase64(someFileData));
在过去的几个小时里,我一直在尝试寻找一种使用 JavaScript 对二进制数据进行 Base64 编码的方法,结果发现 btoa()
只适用于字符串,所以我想出了以下代码,其中 blob
是我需要编码的文件:
function base64Encode(blob) {
var reader = new FileReader();
reader.readAsDataURL(blob)
reader.onloadend = function() {
console.log(reader.result);
};
};
问题是,base64Encode(blob)
总是 returns undefined
,有人知道解决办法吗?
你没有从你的函数返回任何东西,你可以使用 promises 和 async/await。作为示例,请参见下面的代码,它可能会对您有所帮助。
const convertBlobToBase64 = async (blob) => {
return await blobToBase64(blob);
}
const blobToBase64 = blob => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
来电者:
console.log(await convertBlobToBase64(someFileData));