假如后端传过来一个 a.jpg 图片文件,但这个文件的数据类型是 ArrayBuffer,想要用 URL.createObjectURL 展示图片,如何做到?
createObjectURL 函数的参数是 File 对象、Blob 对象或者 MediaSource 对象。因此就要将 ArrayBuffer 转成这三者中的其一类型。
ArrayBuffer、File 相互转换
ArrayBuffer 转成 File 直接调用 new File 构造函数即可:
function bufToFile(buf, filename){
return new File([buf], filename);
}
File 函数的第一个参数是一个包含ArrayBuffer,ArrayBufferView,Blob,或者 DOMString 对象的数组,第二个参数表示文件名称。
File 转成 ArrayBuffer 需要借助 FileReader 类。
function fileToBuf(file, cb){
var fr = new FileReader();
var filename = file.name;
fr.readAsArrayBuffer(file);
fr.addEventListener("loadend",(e) => {
var buf = e.target.result;
cb(buf, filename);
},false);
}
上面函数中,fr 是 FileReader 的实例,readAsArrayBuffer