附上代码及注释
//注意请求的时候要加上{responseType:'blob'}参数
this.$axios.post("/api/xxx/xxx/xxx",this.$qs.stringify({range:0,}),{responseType:'blob'}).then(msg=>{
console.log(msg.data) //打印出来是blob对象,已经不是乱码了
let url = window.URL.createObjectURL(msg.data); //表示一个指定的file对象或Blob对象
console.log(url,"看一下这是啥")
let a = document.createElement("a");
document.body.appendChild(a);
let fileName=msg.headers["content-disposition"].split(";")[1].split("=")[1]; //filename名称截取
a.href = url;
a.download = fileName; //命名下载名称
a.click(); //点击触发下载
window.URL.revokeObjectURL(url); //下载完成进行释放
})
特别注意:
在和后台交互的时候,如果后台返回给我们的是二进制流数据,我们就要在发送的时候加上{responseType:'blob'}这行代码,这样返回给我们的就不是乱码了。