前端代码
export function downloadFile(res) {
const content = res.data;
let disposition = res.headers['content-disposition'];
let fileName = 'export.xlsx';
if (disposition) {
let idx = disposition.indexOf('filename=');
if (idx != -1) {
fileName = decodeURI(disposition.substring(idx + 'filename='.length));
}
}
fileName = fileName.replace(new RegExp('"', 'gm'), '');
const blob = new Blob([content]);
const elink = document.createElement('a');
elink.download = fileName;
elink.style.display = 'none';
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
//通用下载文件
export function commonDownload(url, params) {
request({
url,
method: 'get',
params,
responseType: 'blob',
}).then(res => downloadFile(res));
}
java后端增加如下两行代码
response.setContentType("application/octet-stream"); response.setHeader("content-disposition", "attachment; filename=export.xlsx");