/**
* 导出文件方法
* @param {String} method [请求方式]
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
* @param {String} fileName [导出的文件名,例:test.xlsx]
*/
function DOWNLOAD(method="post",url, params, fileName) {
return new Promise((resolve, reject) => {
axios({
method: method,
url: url,
params: params,
responseType: 'blob'
})
.then(res => {
let reader = new FileReader();
let data = res.data;
reader.onload = e => {
if (e.target.result.indexOf('Result') != -1 && JSON.parse(e.target.result).Result == false) {
// 进行错误处理
} else {
if (!fileName) {
let contentDisposition = res.headers['content-disposition'];
if (contentDisposition) {
fileName = window.decodeURI(res.headers['content-disposition'].split('=')[2].split("''")[1], "UTF-8");
}
}
executeDownload(data, fileName);
}
};
reader.readAsText(data);
resolve(res.data);
})
});
}
// 模拟点击a 标签进行下载
function executeDownload(data, fileName) {
if (!data) {
return
}
let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
来源:https://www.cnblogs.com/gionlee/p/12516222.html