沒有加token之前,下載文件用的是a標簽,直接下載。
現在要求是需要在header中加入token。
1 getDownload(urls, fileName) { 2 var url = urls; 3 var xhr = new XMLHttpRequest(); 4 xhr.open("get", url, true); 5 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 6 xhr.setRequestHeader("access-token", store.state.token.token); 7 xhr.send(); 8 xhr.responseType = "blob"; // 返回類型blob 9 xhr.onload = function() { 10 if (this.status === 200) { 11 let a = document.createElement("a"); 12 let blob = new Blob([this.response], { 13 type: "text/csv;charset=GBK;" 14 }); 15 let objectUrl = URL.createObjectURL(blob); 16 a.setAttribute("href", objectUrl); 17 a.setAttribute("download", fileName + ".csv"); 18 a.click(); 19 } else { 20 alert("出現了未知的錯誤!"); 21 } 22 }; 23 },
如圖所示,最后解決