需求:数据列表导出为excel文件,通过向后台请求接口,返回的结果一般有两种方式:
1. 后台返回excel文件http地址(后台会在服务器生成,前端请求url再下载一遍,浪费服务器资源,优点:前端处理方便)
2. 后台返回二进制文件流(后台不会再服务器生成文件,只需前台进行解析,不占用服务器资源)
代码
1.http地址形式
window.location.href="后台返回的地址"
2.二进制文件流形式
解决方案1
利用js-file-download 插件
npm install js-file-download
在用到的时候进行引入
import fileDownload from "js-file-download";
然后调用
fileDownload(res.data, `违法详情${fileName}`); // res.data为后台返回的二进制流,第二个参数为下载的文件名
最重要的一点:
这里使用axios请求,在header中添加
responseType: "blob" 或者
responseType: "arraybuffer"
进行解析