前后端分离的项目,前端大部分使用fetch调用接口,遇到下载的时候,服务器接口一般直接返回流文件(链接本身就是一个文件)
const getExport = async (url) => { let options = _headerOptions('GET') let response = await fetch(config.apiHost+url,options) response.blob().then((blob) => { const a = window.document.createElement('a'); const downUrl = window.URL.createObjectURL(blob);// 获取 blob 本地文件连接 (blob 为纯二进制对象,不能够直接保存到磁盘上) const filename = response.headers.get('Content-Disposition').split('filename=')[1].split('.'); a.href = downUrl; a.download = `${decodeURI(escape(filename[0]))}.${filename[1]}`; a.click(); window.URL.revokeObjectURL(downUrl); }); return []; }