前端如何通过后端提供的不同接口实现文件下载

在实现开发中,根据不同的业务场景,后端给的下载接口是不同的:

第一种:

文件已经生成并存放在文件资源服务器上,接口返回的是文件的地址

  res = {
      id:'001002',
      filePath:'http://xxx.xxx.xxx.xx/sourcefile/file.zip'
    }

处理方法1:使用window.open打开,浏览器识别到文件类型时触发下载动作

window.open(filePath)

处理方法2:使用<a>标签,点击时可触发下载

<a download=filePath>
第二种:

文件是服务端生成的,前端拿到文件的二进制Blob对象


image.png

处理方法:使用Blob对象初始化,使用<a>标签下载

//这里的type需要根据你下载的文件类型进行设置,我这里下载的zip
let blob = new Blob([data], { type: 'application/zip' });
let url = window.URL.createObjectURL(blob);
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', record.fileName);
document.body.appendChild(link);
//触发下载
link.click();
// 然后移除
document.body.removeChild(link);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 11,062评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,611评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 5,102评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 131,256评论 2 7

友情链接更多精彩内容