实现表格导出功能时,后端接口返回一堆看不懂的乱码,第一反应是不是接口出错了,其实不是,后端直接返回了一个二进制流,前端需要通过blob对象来实现文件下载功能。
后端返回结果如下:
代码如下:
let param = {};
this.$http.post("/api/xxx/xxx/xxx",{
timeout:0,
params:param,
responseType:'blob'
}).then( res =>{
let url = window.URL.createObjectURL(res.data); //表示一个指定的file对象或Blob对象
let a = document.createElement("a");
document.body.appendChild(a);
let fileName= new Date()+'导出文件'; //filename名称截取
a.href = url;
a.download = fileName; //命名下载名称
a.click(); //点击触发下载
window.URL.revokeObjectURL(url); //下载完成进行释放
})