// GET方式原生下载方法
downloadFile(url: string, options = {}) {
url = url + '?' + this.objToStrUrl(options);
let params = {};
let xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = function (e: any) {
if (xhr.readyState === 4) {
let content = this.response;
console.log(xhr, this.response)
if (xhr.status === 200) {
if (content.type === 'application/vnd.ms-excel') {
//@ts-ignore
let filename=`${xhr.getResponseHeader('Content-Disposition')?.split("attachment;filename*=utf-8''")[1]}`;
let a = document.createElement('a');
let url = window.URL.createObjectURL(content);
a.href = url;
a.download = decodeURIComponent(filename) || '';
a.click();
window.URL.revokeObjectURL(url);
} else if( content.type === 'application/json') {
let reader = new FileReader();
reader.readAsText(content, 'utf-8');
reader.onload = (evt) => {
try{
// @ts-ignore
let failData = JSON.parse(evt.target.result);
Message.error(failData.message)
} catch (err) {
console.log(err)
}
}
}
} else {
Message.error(content.message)
}
}
};
xhr.onerror = function (e) {
Message.error("下载错误,请稍后重试", JSON.stringify(e));
console.error(xhr.statusText);
};
xhr.send(JSON.stringify(params));
}