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));