导出文件的配置有以下几种
后端配置
在api的http response 头部设置
1 | header('Content-disposition: attachment; filename=fileName.json'); |
我们只需要通过 <a href='url'>下载文件</a>
就可以下载json文件
前端配置
如果api的http response 头部没有设置响应信息
我们可以用html的
download
属性1
<a href="url" download="fileName.json"> 导出</a>
或者采用js的写法
1
2
3
4
5
6
7
8
9
10
11
var json = JSON.stringify(data); // data为api获取到的json数据
var blob = new Blob([json], {type: "application/json"});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.download = "backup.json";
a.href = url;
a.textContent = "导出";
document.getElementById('content').appendChild(a);两种写法都是采用了HTML5中的download属性,缺点不兼容safari兼容性;
在实践中发现Firefox的href下载链接要加上
data:application/json;charset=utf-8,
才可以启动下载属性data:application/json;charset
是Data URI scheme的语法
结语
下次后端丢给你一个api就不用纠结为啥下载不了文件啦,直接看api返回的http response 有没有文件信息,
如果是单纯json信息又不考虑兼容性可以用download. 如果考虑兼容性就要后端改api response header啦