vue多文件下载txt,csv,png,jpg

问题描述:

使用a标签请求下载地址时,有的文件可以直接点击执行多文件下载,浏览器他是支持直接下载的。
但是像(txt,csv,png,jpg)后缀的格式,浏览器不支持直接下载,虽然可以打开(可以点击鼠标右键选择另存为)但是多文件下载时特别不友好。

解决办法:

自定义一个axios请求使用(responseType: “blob”)对象。

在这里插入图片描述
data是你请求端的路径文件名字。
url是你拼接的请求地址。

multipleSelection是你需要下载的文件的数组对象
在这里插入图片描述
解决办法相关代码:

downloaditem(url,data){
      this.$axios
      .get(url, { responseType: "blob" })
      .then(response => {
        const blob = new Blob([response.data]);//调用接口
        const link = document.createElement("a");//
        link.href = URL.createObjectURL(blob);//创建下载链接
        link.download = data;//你的文件名字
        link.click();
        URL.revokeObjectURL(link.href);
      })
      .catch(console.error);
    },
    download(){
      for(var i =0;i<this.multipleSelection.length;i++){  //循环遍历调用downloadFile方法
        const urls = 'data' +'/'+ this.multipleSelection[i].hex;
        const url = 'data' +'/'+ this.multipleSelection[i].ss;
        const data = this.multipleSelection[i].ss;
        downloadFile(urls);
        this.downloaditem(url,data);
      }
    },

由此可完成此功能,喜欢就点个赞吧。不喜勿喷!

如有不明白如何把文件名字写入数组对象中的可以看这个链接:https://blog.csdn.net/ll18704966143/article/details/120200138

此文章借鉴的是:https://www.jianshu.com/p/ec2ab35d00a3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值