该函数的作用是将base64编码的字符串转换为Blob对象,以便上传或存储。

参数:

  • 'file':文件对象
  • 'base64Str':base64编码的字符串
  • 'fileType':文件类型,如'image/jpeg'

函数内部流程:

  1. 使用window.atob()方法将base64编码的字符串解码为二进制数据。
  2. 创建ArrayBuffer对象,并用Uint8Array视图将二进制数据存储到ArrayBuffer中。
  3. 使用try-catch语句创建Blob对象,如果浏览器支持Blob构造函数,则直接通过new Blob()创建Blob对象。如果不支持,则尝试使用BlobBuilder对象创建Blob对象。
  4. 如果创建Blob失败,则弹出提示框,提示设备版本过低无法上传图片。
  5. 将Blob对象和文件名存入一个对象中,并添加到一个数组的开头,返回Blob对象。
function convertToBlob(file, base64Str, fileType) {
    var base64 = window.atob(base64Str);
    var len = base64.length;
    var buff = new ArrayBuffer(len);
    var uarr = new Uint8Array(buff);

    for (var i = 0; i < len; i++) {
        uarr[i] = base64.charCodeAt(i);
    }
    var blob = null;

    try {
        blob = new Blob([buff], { type: fileType });
    } catch (e) {
        var BlobBuilder = window.BlobBuilder = (
            window.BlobBuilder ||
            window.WebKitBlobBuilder ||
            window.MozBlobBuilder ||
            window.MSBlobBuilder
        );

        if (e.name === "TypeError" && BlobBuilder) {
            var builder = new BlobBuilder();
            builder.append(buff);
            blob = builder.getBlob(fileType);
        } else {
            alert('设备版本过低,无法上传图片!')
        }
    }
    var blObj = {
        blob: blob,
        filename: file.name
    }
    blobArr.unshift(blObj)

    return blob;
}
JavaScript base64字符串转Blob对象:解析代码实现

原文地址: https://www.cveoy.top/t/topic/oF7J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录