没有加token之前,下载文件用的是a标签,直接下载。
现在要求是需要在header中加入token。
getDownload(urls, fileName) {
var url = urls;
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("access-token", store.state.token.token);
xhr.send();
xhr.responseType = "blob"; // 返回类型blob
xhr.onload = function() {
if (this.status === 200) {
let a = document.createElement("a");
let blob = new Blob([this.response], {
type: "text/csv;charset=GBK;"
});
let objectUrl = URL.createObjectURL(blob);
a.setAttribute("href", objectUrl);
a.setAttribute("download", fileName + ".csv");
a.click();
} else {
alert("出现了未知的错误!");
}
};
},
如图所示,最后解决