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相互转换内容,敬请查阅本站历史文章或继续阅读后续推荐,感谢支持!

作者最新文章