GET方式:
func_export(){
let url = "/xxx/xxx/xxx/downloadFile?fileName=" + fname;
window.open(encodeURI(url));
}
POST 方式:
func_export(){
let params = {
"userId":sessionStorage.getItem('userid'),
"cardfalg":this.selState.length>0?this.selState[0].label:"",
"create_starttime":this.beginTime==""?"":this.beginTime.replace(/-/g,''),
"create_endtime":this.endTime==""?"":this.endTime.replace(/-/g,'')
}
console.log(params)
let xhr = new XMLHttpRequest();
xhr.open('POST', '/sisp/cardInfoService/statistic/exportUserDevice', true);
xhr.setRequestHeader('content-type', 'application/json');
xhr.responseType = "blob"; // 返回类型blob
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onload = function () {
// 请求完成
let blob = this.response;
let fileName = '数据分析';
fileName += ".xlsx";
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
// 兼容火狐浏览器,a标签需在dom上
let ff = document.getElementById('firefox');
ff.appendChild(link);
link.click();
ff.removeChild(link);
window.URL.revokeObjectURL(link.href);
}
};
xhr.send(JSON.stringify(params));
}
注意事项:POST方式的下载,使用axios会导致数据损坏,下载到的文件会发生错误,所以使用原生的XHR来处理