前端json格式请求文件流导出excel文件 :
请求方法:
// http为axios封装后的方法
export function exportFile(url,data){
http.post(url,data,{
headers: {
'Content-type' : 'application/json;charset-UTF-8', // 设置content-type
'Authorization' : sessionStorage.getItem('sessionId') // 获取传给后台的token
},
responseType : 'arraybuffer'
// responseType : 'blob'
})
}
使用时:
// 页面中引入该方法使用
let data = {a: 1,b:2} // 传参
exportFile('接口地址url', data).then(res => {
if (res) {
var name = res.headers['content-disposition'].split("attachment;filename=")[1]
var lastname = name.substring(name.lastIndexOf('.'), name.length)
var filename = '自定义文件名' + lastname
var blob = new Blob([res.data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
});
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob);
} else {
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); // 创建下载的链接
downloadElement.herf = herf;
downloadElement.download = filename; // 下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click();// 点击下载
document.body.removeChild(downloadElement); // 下载完成移除元素
window.URL.revokeObjectURL(herf);// 释放掉blob对象
}
}
}).catch(err => {
console.log(err)
})