场景:我调用第三方接口,返回一个下载文件
花了还是有一段时间,只要是从意识到axios接收参数需要变成接收文件,到接收文件的格式还有讲究,哇!
好了,说正事:
1.首先,后端返回一个可下载二进制流, 那么前端axios接收格式就得变,如下两种,怎么使用看axios去喽~诶嘿~
responseType: 'arraybuffer'
responseType: 'blob'
2.上面两种格式说实话我也没去看他们区别,第一个arraybuffer是我们后端导出文件时候用的,第二个blob就是第三方接口返回下载pdf文件用的。
3.格式改了,怎么下载(忘记代码哪里复制的了,挺久远了)?
至于Blob的type,下载什么格式文件,最好上网搜一搜,或者把文件转成base64,逗号前面一串可能有,不确定,这个我也没试过,单纯的懒……
let blob = new Blob([res], {type: 'application/pdf'});
// 创建a标签->下载->删除a标签
const link = document.createElement('a');
link.style.display = 'none';
link.href = URL.createObjectURL(blob);
link.download = '网签合同模板';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);