问题
之前在工作中碰到个需求:前端点击按钮发送请求,后端返回 excel 文件的二进制流,并实现下载。
数据是请求成功了,但我在实现过程中碰到了以下两个问题:
- 下载的 excel 文件都是乱码的
- 浏览器控制台中能看到该请求的
Content-Disposition
响应头,但我在代码中无法获取到它,这样就无法得到 excel 的文件名了
解决方法
- 发送请求的时候一定要加上
responseType = 'arraybuffer'
,这样才能接收并解析二进制字节流的数据 - 这个问题需要在后端设置:在响应头上要加上
Access-Control-Expose-Headers:Content-Disposition
,这样浏览器才能让你获取到Content-Disposition
响应头