需求:后台返回的是 blob 数据流,我要转为图片并下载
实现:
// TODO 二维码下载
const res = await isLegal(id);
if (res.code === 200) {
const file = await downER(id);
const blob = new Blob([file]);
const fileName = 'erweima.png';
const dlink = document.createElement('a');
if ('download' in document.createElement('a')) {
// 非IE下载
const dlink1 = document.createElement('a');
dlink1.download = fileName;
dlink1.style.display = 'none';
dlink1.href = URL.createObjectURL(blob);
this.url = URL.createObjectURL(blob);
document.body.appendChild(dlink1);
dlink1.click();
URL.revokeObjectURL(dlink1.href); // 释放URL 对象
document.body.removeChild(dlink1);
} else {
// IE10+下载
navigator.msSaveBlob(blob, fileName);
}
只是这样下载的图片会打不开,说格式不支持,要把返回的格式设置为 blob 格式
options.type1 === 'blob' && (data.responseType = 'blob')
如果是要返回 blob 就设置 responseType = ' blob '