JavaScript实现Base64、URL与Blob相互转换的三种核心方法
作者:小满时间:2026-11-01 00:17:37浏览:426
本文详细解析JavaScript中URL、Base64与Blob三者之间的转换逻辑。通过Canvas绘制、FileReader读取及Uint8Array处理等三种核心方式,提供完整的代码实现与调用示例,帮助开发者高效处理前端图片与二进制数据交互。
将URL地址转换为Base64编码格式
function urlToBase64(url) {
return new Promise((resolve, reject) => {
let image = new Image();
image.onload = function () {
let canvas = document.createElement('canvas');
canvas.width = this.naturalWidth;
canvas.height = this.naturalHeight;
// 将图片插入画布并开始绘制
canvas.getContext('2d').drawImage(image, 0, 0);
// result
let result = canvas.toDataURL('image/png')
resolve(result);
};
// CORS 策略,会存在跨域问题https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror
image.setAttribute("crossOrigin", 'Anonymous');
image.src = url;
// 图片加载失败的错误处理
image.onerror = () => {
reject(new Error('urlToBase64 error'));
};
})
}执行上述转换函数的调用示例:
urlToBase64(url).then(res=> {
// 转化后的base64图片地址
console.log('base64', res)
});将Blob对象转换为URL链接
function blobToBase64(blob) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
resolve(e.target.result);
};
// readAsDataURL
fileReader.readAsDataURL(blob);
fileReader.onerror = () => {
reject(new Error('blobToBase64 error'));
};
});
}执行Blob转URL函数的调用示例:
blobToBase64(blob).then(res => {
// 转化后的base64
console.log('base64', res)
})将Base64字符串转换为Blob二进制对象
function function base64toBlob(dataurl) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
}将Blob对象转换为File文件对象
function blobToFile(blob, name) {
return new File([blob], name + '.png', { type: blob.type });
}功能实现总结
至此,关于JavaScript中Base64、URL与Blob三者间相互转换的三种主要方式已介绍完毕,如需了解更多相关js base64、url和blob相互转换内容,敬请查阅本站历史文章或继续阅读后续推荐,感谢支持!
作者最新文章
JS空字符串、null和undefined转数字的结果是什么
2026-11-05 14:49:16
CodePen、JSFiddle与StackBlitz:主流JS在线编辑器对比
2026-11-05 13:38:29
JS怎么将时间戳转换为“刚刚”、“几分钟前”等相对时间
2026-11-05 12:55:14
JavaScript将儒略日逆向还原为公历日期时间的实现方法
2026-11-04 23:51:05
能在我的世界手机版直接修改JS代码吗
2026-11-04 19:02:53
