当下载通过请求一个地址下载某个文件的时候,我一般使用的是a标签直接写上href直接写上链接进行跳转下载
<a href="xxxx" target="_blank"></a>
- 这种方式的优势 简单,快速
- 缺点 只能get方式进行获取,不可以传递data以及自定义headers信息
如果需要利用post请求并且需要验证登录才可下载,就可以用到axios的这种方式进行下载。
axios({
method: 'post',
url: `${baseImgUrl}/sg-project-info/exportProjectSummary`,
responseType: 'blob',
data: {
year: '',
deptId: '',
},
}).then((response) => {
var fileURL = window.URL.createObjectURL(new Blob([response.data]));
var fileLink = document.createElement('a');
fileLink.href = fileURL;
fileLink.setAttribute('download', 'file.pdf');
document.body.appendChild(fileLink);
fileLink.click();
document.body.removeChild(fileLink);
window.URL.revokeObjectURL(fileURL);
});
- 这种方式的优势:可以post方式请求,可以携带headers信息
遇到的问题
- 当我封装了axios之后,利用vite的proxy代理进行请求就一直报403错误。不知道什么原因,只能用原生的axios写完整baseURL请求。。反正是解决了、、