项目起始的时候,有导出表格的需求,不需要token直接可以使用A标签直连下载
但是在我们项目逐渐完善后,在导出导入等一系列敏感操作的情景下,会要求携带token进行下载导入,这时,A标签href直连就不好使了,就需要写一个公用的方法,本文使用的是原生ajax请求数据
- getUserToken()为自己写的方法,return的是存储的token
- url为下载的连接,post方法需要在连接后面使用formData格式append每个参数
- 可以封装一个方法,
- 可配置项:
- 下载链接,文件名称
var xhr = new XMLHttpRequest();
xhr.open('post', URL, true);
xhr.responseType = 'blob';
xhr.setRequestHeader('token', getUserToken());
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
xhr.onload = function () {
if (this.status == 200) {
var blob = this.response;
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
a.href = url;
//设置文件名称
a.download = '(自定义文件名称).xls';
a.click();
}
}
xhr.send(JSON.stringify({
"type" : 1,
"startDate" : "2018-01-01",
"endDate" : "2018-12-31"
}));
}