最近项目遇到一个问题。导出功能后端直接返回了文件流,需要前端下载到本地。
首先尝试了blob方法转换文件流的本地地址,使用a标签下载
ActivityService.activityExport(data).then(res => {
// 使用blob转换文件流
var blob = new Blob([res], {type: 'application/vnd.ms-excel'})
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = '文件名';
link.click();
})
此时文件可以下载,但是打开失败。查找资料后找到了方法
在请求时添加responseType = 'arraybuffer',此时后端返回的文件经过转换就可以正常下载打开了。
config.responseType = 'arraybuffer'