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對象
}
}
}
}
下載blob
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 如何實(shí)現(xiàn)最基本的文件(附件)上傳下載? 存儲格式 數(shù)據(jù)庫建立Blob/Clob/BYTEA格式的字段用于存儲文件的...
- 原文地址https://blog.kazaff.me/2016/07/20/jquery%E7%9A%84ajax...
- 最近晚上回去在B站上看視頻,因?yàn)橐曨l卡,所以想把視頻文件先下載下來再看。前幾個視頻下載的很順利,直接右擊,視頻另存...
- 設(shè)置了responseType: 'blob'的報文表示響應(yīng)報文的類型為Blob 對于ie與edge下載blob文...