Export(){
axios({
method: "get",
url: xxxxxx,
responseType: "blob" , //必写
headers: {
'token': localStorage.getItem('token')
}
}).then((res)=>{
//new blob对象,设置type为导出文件格式,这里以xls为列
let blob = new Blob([res.data],
{ type:'application/vnd.ms-excel;charset=utf-8;' }
);
const link = document.createElement("a"); //创建a标签
let fliaName = "xx.xls"
link.style.display = "none";
link.href = URL.createObjectURL(blob);
link.download = fliaName; //导出文件名
document.body.appendChild(link);
link.click();//执行下载
URL.revokeObjectURL(link.href); //释放url
document.body.removeChild(link); //释放标签
this.$message.success('导出成功!');
})
},
导出文档,调用接口是设置 responseType: "blob" ,不能写在headers内,要单独设置。
后端会返回一个blob流乱码,通过“blob”转换为blob类型的文件。
拿到文件后 new 一个blob对象,设置type为理想的导出文件类型。