1.关于axios 的responseType类型的设置
| 值 | 数据类型 |
|---|---|
| "" | DOMSting(默认类型) |
| arraybuffer | ArrayBuffer对象 |
| blob | Blob对象 |
| document | Document对象 |
| json | JavaScript Object,parsed from a JSON string returned by the server |
| text | DOMSting |
axios请求下载导出一个文件,请求成功时返回的是一个流形式的文件,需要设置responseType: 'arraybuffer',但是请求失败的需要返回的是json数据,所以需要把arraybuffer转成Json对象。
2.arraybuffer转成Json对象
var enc = new TextDecoder('utf-8')
var resp = JSON.parse(enc.decode(new Uint8Array(res.data))) //转化成json对象
3.Blob进行文件流的转化
var b = new Blob([res.data], {
type: "application/zip",
});
// 根据传入的参数b创建一个指向该参数对象的URL
var url = URL.createObjectURL(b);
var link = document.createElement("a");
// 导出的文件名--后端放在头部了
let fileName = decodeURIComponent(
res.headers["content-disposition"].split("=")[1]
);
link.download = fileName;
link.href = url;
link.click();