我的任务是裁剪图像并上传到各种尺寸的 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)