当前位置:   article > 正文

vue 通过blob下载流文件_vue blob下载文件

vue blob下载文件

在web端的管理系统中常会用到的功能就是下载文件(包含excel、word、txt等),今天我就来说一说我是如何实现的。

下载有两种形式,一种是后台接口直接返回下载的路径,根据路径下载,另一种是后台接口返回流文件(一堆乱码,如下图所示),我们根据blob来下载。本篇文章主要介绍的是blob下载文件。下面就来具体说说是如何是现实:

1、下载blob文件需要知道文件对应格式的type,所以要明确下载文件格式(以word、excel、txt为例)

文件后缀blob对应的type
.doc

application/msword

.docx

application/vnd.openxmlformats-officedocument.wordprocessingml.document

.xls

application/vnd.ms-excel

.xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.txttext/plain

2、知道了所需要下载的文件格式后,我们就可以写了,直接上代码

  1. <template>
  2. <div>
  3. <el-button type="primary" @click="downloadFile" size="medium" plain icon="el-icon-download">下载</el-button>
  4. </div>
  5. </template>
  6. <script>
  7. import axios from 'axios';
  8. export default {
  9. name: 'Test',
  10. data() {
  11. return {};
  12. },
  13. methods: {
  14. downloadFile() {
  15. let url_post = '接口地址';
  16. //post方式,param为所需要传的参数,
  17. // responseType: 'arraybuffer'一定要写,否则下载的文件会出现乱码
  18. axios
  19. .post(url_post, param, { responseType: 'arraybuffer' })
  20. .then(res => {
  21. let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }); //type为所需要下载的文件格式,以xls文件为例
  22. //浏览器兼容,Google和火狐支持a标签的download,IE不支持
  23. if (window.navigator && window.navigator.msSaveBlob) {
  24. //IE浏览器、微软浏览器
  25. /* 经过测试,微软浏览器Microsoft Edge下载文件时必须要重命名文件才可以打开,
  26. IE可不重命名,以防万一,所以都写上比较好 */
  27. window.navigator.msSaveBlob(blob, '文件.xls');
  28. } else {
  29. //其他浏览器
  30. let link = document.createElement('a'); // 创建a标签
  31. link.style.display = 'none';
  32. let objectUrl = URL.createObjectURL(blob);
  33. link.href = objectUrl;
  34. link.click();
  35. URL.revokeObjectURL(objectUrl);
  36. }
  37. })
  38. .catch(err => {
  39. this.$message.error(err.message);
  40. });
  41. }
  42. }
  43. };
  44. </script>

好了,今天就分享到这里,see you。。。

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

闽ICP备14008679号