axios请求response为对象或者文件流的处理方式

First Post:

Last Update:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const res = await Axios.get(url, {
params,
responseType: "blob",
});
// 如果response为json串
if (res.data.type === "application/json") {
const reader = new FileReader();
reader.readAsText(res.data, "utf-8"); // 设置读取的数据以及返回的数据类型为utf-8
reader.addEventListener("loadend", function () {
const json = JSON.parse(reader.result as any); // 返回的数据
console.log(json);
});
} else {
const fileName = `需要下载的文件名`;
const blob = new Blob([res.data], { type: "application/zip" }); // 需要下载的文件类型
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
const downloadElement = document.createElement("a");
const href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = fileName; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
}