function exportFile(url, data) {
axios({
method: 'post',
url: url,
data: data,
responseType: 'blob'
}).then((res) => {
const content = res.data;
const blob = new Blob([content]);
const fileName = "导出数据.xls";
const selfURL = window[window.webkitURL ? 'webkitURL' : 'URL'];
let elink = document.createElement('a');
if ('download' in elink) {
elink.download = fileName;
elink.style.display = 'none';
elink.href = selfURL['createObjectURL'](blob);
document.body.appendChild(elink);
// 触发链接
elink.click();
selfURL.revokeObjectURL(elink.href);
document.body.removeChild(elink)
} else {
navigator.msSaveBlob(blob, fileName);
}
})
}
2> 使用form表单,采用GET方法,参数通过input值传给后台,接收后台返回的文件流直接下载,这里注意后台接收不能用注解requestBody,而是用注解requestParam,而且url过长,不友好
exportFile(url, data) {
//data是post请求需要的参数,url是请求url地址
var form = document.createElement("form");
form.style.display = "none";
form.action = url;
form.method = "get";
document.body.appendChild(form);
// 动态创建input并给value赋值
for (var key in data) {
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = params[key];
form.appendChild(input);
}
form.submit();
form.remove();
}