JavaScript base64字符串转Blob对象:解析代码实现
该函数的作用是将base64编码的字符串转换为Blob对象,以便上传或存储。
参数:
- 'file':文件对象
- 'base64Str':base64编码的字符串
- 'fileType':文件类型,如'image/jpeg'
函数内部流程:
- 使用window.atob()方法将base64编码的字符串解码为二进制数据。
- 创建ArrayBuffer对象,并用Uint8Array视图将二进制数据存储到ArrayBuffer中。
- 使用try-catch语句创建Blob对象,如果浏览器支持Blob构造函数,则直接通过new Blob()创建Blob对象。如果不支持,则尝试使用BlobBuilder对象创建Blob对象。
- 如果创建Blob失败,则弹出提示框,提示设备版本过低无法上传图片。
- 将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;
}
原文地址: https://www.cveoy.top/t/topic/oF7J 著作权归作者所有。请勿转载和采集!