下載blob

function exportExcel(payload,url){
  let xhr = new XMLHttpRequest();
  xhr.open('post', $.baseUrl()+url, true);
  xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
  xhr.setRequestHeader('Authorization',Authorization);
  xhr.responseType = 'blob'; // 返回類型blob
  xhr.send(JSON.stringify(payload)); // 發(fā)送ajax請求
  xhr.onreadystatechange = function () {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      // console.log(xhr)
      //創(chuàng)建blob對象
      const blob = new Blob([xhr.response]);
      if(blob.size < 100) {      //此處是用來區(qū)分后臺的數(shù)據(jù)源是文件、圖片流,還是我們的告警信息,(如果是告警信息,size會很短)
        var fr = new FileReader(); //FileReader可以讀取Blob內(nèi)容  
        fr.readAsText(blob); //二進(jìn)制轉(zhuǎn)換成text
        fr.onload = function (e) {  //轉(zhuǎn)換完成后,調(diào)用onload方法
          var result = fr.result;  //result 轉(zhuǎn)換的結(jié)果
          console.log(JSON.parse(result))
          $.alert(JSON.parse(result).msg)
        }
      }else{
        const fileName = xhr.getResponseHeader('content-disposition').split(';')[1].split('filename=')[1].split('.')[0]
        //創(chuàng)建下載元素
        const downloadElement = document.createElement('a');
        // 創(chuàng)建下載的鏈接
        const href = window.URL.createObjectURL(blob);
        downloadElement.href = href;
        downloadElement.download = decodeURI(fileName)+'.xls'; // 下載后文件名
        document.body.appendChild(downloadElement);
        downloadElement.click(); // 點(diǎn)擊下載
        document.body.removeChild(downloadElement); // 下載完成移除元素
        window.URL.revokeObjectURL(href); // 釋放掉blob對象
      }
    }
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容