簡單的下載原理:創(chuàng)建a標(biāo)簽,使用download用踩,點擊后銷毀即可渠退,但是如果需要token,a標(biāo)簽無法加請求頭脐彩,需要轉(zhuǎn)成blob
var xhr = new XMLHttpRequest(); //定義http請求對象
xhr.open("GET",this.uploadhref, true); //定義請求格式碎乃,地址
xhr.setRequestHeader("X-Access-Token",this.token);//加請求頭
xhr.send();
xhr.responseType = "blob"; // 返回類型blob
xhr.onload = function() { // 定義請求完成的處理函數(shù),請求前也可以增加加載框/禁用下載按鈕邏輯
if (this.status===200) {
var blob = this.response;
var reader = new FileReader();
reader.readAsDataURL(blob); // 轉(zhuǎn)換為base64惠奸,可以直接放入a標(biāo)簽href
reader.onload=function (e) {
// 轉(zhuǎn)換完成梅誓,創(chuàng)建一個a標(biāo)簽用于下載
var a = document.createElement('a');
a.download="lng工廠價格.xlsx"; //自定義下載文件名稱
a.href = e.target.result;
document.body.append(a); // 修復(fù)firefox中無法觸發(fā)click
a.click();
}
}else{
alert("出現(xiàn)了未知的錯誤!");
}
}
搞定