js - - - - - 如何批量下载文件

5 篇文章 1 订阅

1. 思路解析

  • 方案1: 将所有的需要下载的文件集合到一个数组里,遍历下载
  • 方案2: 将所有文件打包下载

2. 方案一:逐个下载

组装数据结构 & 创建标签进行下载

// 组建数据结构
  const downloadFiles = () => {
      const downloadList = fileList.map((item, index) => {
        return {
          name: item.fileName,
          href: "" // 这里组装下载地址
        };
      });
      const triggerDelay = 100;
      const removeDelay = 1000;
      downloadList.forEach((item, index) => {
        createIFrame(item.href, index * triggerDelay, removeDelay);
      });
    };

// 创建标签进行下载
  const createIFrame = (url, triggerDelay, removeDelay) => {
      setTimeout(function() {
        // 动态添加iframe,设置src,然后删除
        const frame = document.createElement("iframe"); //创建标签
        frame.setAttribute("style", "display: none");
        frame.setAttribute("src", url);
        frame.setAttribute("id", "iframeName");
        frame.setAttribute("type", "application/pdf");
        document.body.appendChild(frame);
        setTimeout(function() {
          document.body.removeChild(frame);
        }, removeDelay);
      }, triggerDelay);
    };

注意:

若单个文件过大,标签加载的时间会相应越长;同时下载文件很多,很可能会因操作而漏掉正在加载的文件!!!

2. 方案二: 打包下载

使用file-saver& jszip插件进行前端打包

或者后端同学配合出一个打包后的文件接口直接下载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值