在项目中写到excel的下载功能,但是后台一直有报错,提交参数正确。
首先排查生成文件时后端是否有错
排除后端之后,通过测试工具下载的文件发现又是可以打开的
那肯定是前端哪里出了问题。经过一系列百度,发现返回的是文件流
需要在使用axios的时候,配置上responseType: 'blob’最后就可以打开了
这个地方如果responseType设为blob的话,返回的文件流将会被转成blob对象,就可以正常。
网上也有说:发现最坑的是mockjs的引入,mockjs会影响responseType的设置转换,项目中注释掉mockjs即可实现成功blob的转换(https://www.jianshu.com/p/bed4e8ae10ba)
话不多说,直接上代码
export function aa(data) { return request({ headers: { headers}, responseType: "blob", url: `xx/xx`, method: 'post', data: data }) }