当前位置:   article > 正文

前端JS处理后端文件流(a标签下载文件)_js处理文件流

js处理文件流

前端项目中,经常会遇见下载或上传文件需求,这里也简单给出自己的解决方案,主要解决前端发送ajax请求,后端返回二进制流数据,利用JS对流进行处理,最后利用a标签下载文件

  1. 首先是前端触发请求入口,如点击按钮下载文件
  2. 调用封装公用请求方法

        前提: 安装axios库,或者自己封装ajax方法

  1. const downloadFile = (url, fileName) => {
  2. // url: 后端下载接口 fileName: 下载文件时,文件名称
  3. axios({
  4. method: 'get', // 此处不一定只是get方法,也可以通过参数传递
  5. url: url,
  6. responseType: 'blob', // 此处重点:标明后端返回数据类型为流
  7. }).then(res => {
  8. let blob = new Blob([res.data], {
  9. // 下载的文件类型(此处可更改:具体取值参考以下链接地址)
  10. type: "application/vnd.ms-excel"
  11. });
  12. let url = window.URL.createObjectURL(blob);
  13. let link = document.createElement('a');
  14. link.style.display = 'none';
  15. link.download = fileName
  16. link.href = url
  17. document.body.appendChild(link)
  18. link.click()
  19. }).catch(error => {
  20. console.log('下载文件失败')
  21. });
  22. }

这种下载文件方式在前端项目中非常常见,最后简单梳理一下实现原理: 前端发送ajax请求,后端返回流数据,利用Blob对象处理流数据,生成a标签赋值url地址和download属性

注: Blob =》》 对象表示一个不可变、原始数据的类文件对象, 可参考网站: Blob - Web API 接口参考 | MDN

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/63587?site
推荐阅读
相关标签
  

闽ICP备14008679号