后端返回:
发起请求时要添加: responseType: 'blob'
下载函数 :
const downloadFile = (content, tem = 0) => {
let b = new Blob([content]); //拿到文件流下载对象
let url = window.URL.createObjectURL(b); //生成文件流下载链接
let a = document.createElement('a'); //创建一个a标签用来跳转
a.href = url; // a标签 href 赋值 链接
a.download = t("dataReport.dataR")+`.xls`; //要下载文件的格式
document.body.appendChild(a); //将标签DOM,放置页面
a.click();
window.URL.revokeObjectURL(url); //释放 url 对象内存
document.body.removeChild(a); //移除标签节点
};
下载echarts的图片:
const base64ToBlob = (code) => {
let parts = code.split(';base64,');
let contentType = parts[0].split(':')[1];
let raw = window.atob(parts[1]);
let rawLength = raw.length;
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], { type: contentType });
};
const imgExport = (id) => {
const myChart = echarts.getInstanceByDom(document.getElementById(id));
let content = myChart.getDataURL({ backgroundColor: '#fff' });
let aLink = document.createElement('a');
let blob = base64ToBlob(content);
let evt = document.createEvent('HTMLEvents');
evt.initEvent('click', true, true);
aLink.download = `xxx.png`;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));
};