一、get请求导出文件
1、window.open(url)
会自动打开一个标签页,下载完后会自动关闭这个标签页。
2、window.location(url) 或 location.href = url
在当前标签页下载。
3、< a href=“url” download=“filename”>点击链接下载< /a>
在当前标签页下载。
总结
优点:代码简单。
缺点:当导出失败时,返回的错误信息会覆盖原来的页面,错误信息可读性差。
二、post请求导出文件
1、思路
通过判断返回值的header.‘content-type’ 是否是 application/octet-stream,来确定文件导出是否成功!
content-type:
- application/octet-stream: 返回值类型为二进制流,即导出成功;
- application/json;charset=utf-8:返回值类型为json格式,即导出失败信息。由于我们请求的时候设置了responseType=‘blob’,所以返回值会被转换成二进制流。
2、实现
// 以axios为例
axios({
url,
method: 'post',
responseType: 'blob',
params
})
.then