问题:前端访问导出接口无法直接下载文件,而是输出了文件流
原因:ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的
解决办法:在页面上添加a标签实现下载
代码如下:
export function _postf(url, params, errorback) {
return new Promise((resolve, reject) => {
axios.post(url, params, { responseType: 'blob' })
.then(res => {
const aLink = document.createElement("a");
let blob = new Blob([res], { type: "application/vnd.ms-excel" });
aLink.href = URL.createObjectURL(blob);
aLink.download = '导出下载.xlsx';
aLink.click();
document.body.appendChild(aLink);
})
.catch((error) => {
reject(error);
})
})
}
至此问题解决