直接看代码
let blob = new Blob([res]); // res为接口返回的数据,此时接口返回的是blob格式的数据
let link = document.createElement('a');
link.download = '文件名称.zip';
link.href = URL.createObjectURL(blob); // 文件流生成的url
document.body.appendChild(link);
link.click(); // 模拟按钮点击
URL.revokeObjectURL(link.href); // 释放URL对象
document.body.removeChild(link); // 移除a标签
正常情况下,通过 window.location = url 就可以下载文件。浏览器判断这个链接是资源而不是页面,就会自动下载文件。但是通过文件流生成的url 对应的资源是没有文件名的,需要添加文件名。这时候我们需要创建一个 a 标签实现这个功能。