相关链接 - 流行因乐
ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。
请求时 加入 arraybuffer 返回类型
axios({
method: 'get | post',
url: "****",
responseType: 'arraybuffer'
}).then(res => {
console.log(res);
const blob = this.arrayBufferToBlob(res.data, sn);
const file = this.blobToFile(blob, sn, format);
this.upload(file); // 执行业务流程 上传
});
得到 ArrayBuffer类型,
转为 base64 后
/** arrayBuffer 转 base64 */
arrayBufferToBlob(arrayBuffer, filename) {
return new Blob([arrayBuffer], { type: filename });
},
再转为 blob
/** base64 转 blob */
base64ToFile(base64) {
const arr = base64.split(",");
const mime = arr[0].match(/:(.*?);/)[1];
const suffix = mime.split("/")[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
const file = new File([u8arr], `${"file"}.${suffix}`, {
type: mime,
});
return file;
}
最后转为 文件流 (file)
/** blob 转 文件流(file) */
blobToFile(blob, filename, type) {
return new File([blob], filename, { type })
},