点击按钮,导出Excel,接口返回的是数据流,axios 利用blob导出后端返回二进制流excel文件
打开axios官网,在请求配置这里可以看到‘responseType’这个属性 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210308184820831.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbmd6aG91NzI4,size_16,color_FFFFFF,t_70)
//api.js
//设置responseType为‘blob’
export function download (data) {
return request({
url: '/***/***/download',
method: 'post',
data: data,
responseType: 'blob'
})
}
//index.vue
download() {
let data = {};
data.terminalIccid = this.terminal.terminalIccid;
data.itemId = this.itemId;
download(data).then((res) => {
console.log(res);
let blob = new Blob([res], { type: 'application/vnd.ms-excel' });
let objectUrl = URL.createObjectURL(blob);
window.location.href = objectUrl;
});
},
效果图(Excel可以正常导出)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210308191118861.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbmd6aG91NzI4,size_16,color_FFFFFF,t_70)
稍微介绍一下blob对象:
Blob对象: 一直以来,JS都没有比较好的可以直接处理二进制的方法。而Blob的存在,允许我们可以通过JS直接操作二进制数据。
Blob对象可以看做是存放二进制数据的容器
|