一、封装函数
downloadText(data, name) {const id = "__ETL_DOWNLOAD_BUTTON__";const blob = new Blob([data]);const url = URL.createObjectURL(blob);let a = document.getElementById("#" + id);if (!a) {a = document.createElement("a");a.id = id;document.body.append(a);}a.href = url;a.download = name;a.click();},
二、后台返回文件流
传参、调接口,下载文件
let params = {
fileName: val.fileName,
filePath: val.filePath
};
const res = await DownLoad(params);
const { data, headers } = res;
if (!headers[“content-disposition”]) {
this.$message.error(“导出数据为空”);
return false;
}
const fileNames = headers[“content-disposition”].split(
“fileName=”
);
console.log(fileNames);
const fileName = decodeURI(fileNames[fileNames.length - 1]);
this.downloadText(data, fileName);