截图如上,问题有很多种可能:
1.responseType或Blob的type没有配置正确,可以按如下的方式配置。
2.Blob的第一个参数没有配置正确。如果你使用的是$http.get().then()格式,那Blob文件会放在res.data中,如下图。如果你使用的是axios封装的api,那它会拦截直接剥取得到res.data为res,所以使用res即可。
最后,附上代码
exportPolicy() {
let params = { policyIds: this.exportList, filetype: 'word' };
this.$axios
.request({
url: 'http://192.168.10.114:9092/policy/export',
responseType: 'blob', //重要
method: 'post',
data: params,
})
.then(function (res) {
console.log(res);
// 导出流
const blob = new Blob([res.data], { type: 'application/zip' }); // 指定格式
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = `policy_${Date.now()}.zip`; // 指定导出名称
link.click();
URL.revokeObjectURL(link.href);
})
.catch(function (err) {
console.log(err);
});
},