通过Blob对象处理返回内容
先设置responseType为blob,对象随后对返回的数据进行Blob处理,再创建a标签模拟点击下载。
值得注意的是,如果你的项目中使用了mock数据,那么会覆盖你的responseType的设置为默认的json,使得下载文件内容乱码。因此,你需要密切关注返回的数据是个Blob对象还是Json格式
具体代码如下
axios({
method:'post',
url:'',
responseType: "blob", // 该项必填
data:{}
}).then(res=>{
const blob = new Blob([res.data], {
type:
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
});
const downloadElement = document.createElement("a");
const href = window.URL.createObjectURL(blob);
// 如果后端没有提供文件名不用管下面注释的代码
// let contentDisposition = res.headers["content-disposition"]; //从response的headers中获取filename, 后端response.setHeader(&#