downloadFile(data, code)
data請求的參數
code是需要在response header 中得到的參數
downloadFile(data,codeStr) {
if(window.XMLHttpRequest){
var xhr = new XMLHttpRequest();
}else{
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
};
xhr.open('POST', da.conf.ajaxUrl + data.url, true); // 也可以使用POST方式,根據接口
xhr.setRequestHeader('AuthToken', da.getLocal('token') || '')
xhr.setRequestHeader('Content-Type', 'application/json')
xhr.send(JSON.stringify(data.data))
xhr.responseType = "blob"; // 返回類型blob
// 定義請求完成的處理函數,請求前也可以增加加載框/禁用下載按鈕邏輯
xhr.onload = function () {
// 請求完成
var messageCode = xhr.getResponseHeader(codeStr);
if(messageCode != '1'){
return;
}
if (this.status === 200) {
if(data.zip) {
var blob = new Blob([this.response], { type: "application/zip" });
}else {
var blob = this.response;
}
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function (e) {
// 轉換完成,創建一個a標簽用於下載
var a = document.createElement('a');
a.download = data.name || '下載';
a.href = e.target.result;
$("body").append(a); // 修復firefox中無法觸發click
a.click();
$(a).remove();
}
}
};
},