0

我的任务是裁剪图像并上传到各种尺寸的 amazon s3。但是我用来裁剪的插件提供了 Blob url,而不是 Base 64 字符串我尝试了几种方法将 blob url 转换为 base64 字符串,但我最终遇到了这个错误javasdcript TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.然后我意识到首先我必须从 blob 下载图像url 那么只有它可以转换。

功能

const getBase64ImageFromUrl =  async(imageUrl) => {
  var res = await fetch(imageUrl);
  var blob = await res.blob();

  return new Promise((resolve, reject) => {
    var reader  = new FileReader();
    reader.addEventListener("load", function () {
        resolve(reader.result);
    }, false);

    reader.onerror = () => {
      return reject(this);
    };
    reader.readAsDataURL(blob);
  })
}

用法

const blobUrl = "blob:http://localhost:8000/0bea79ee-878f-49a1-9256-9f1f0be73723"
const base64String = await getBase64ImageFromUrl(blobUrl)
console.log(base64String)
4

0 回答 0