简单易用,基于js或vue项目实现一次批量文件下载功能

批量文件下载实现
本文介绍了一种使用JavaScript和iframe实现的批量文件下载方法,通过循环调用downloadFile方法,能够连续下载多个文件而不受iframe相互影响。

页面效果

下面这个是我的项目截图效果

代码

<button @click="bulkDownload()">批量下载</button>

js截图代码

js代码,想用的直接复制下面代码就可以

export const downloadFile = (url) => {
    const iframe = document.createElement("iframe");
    iframe.style.display = "none";  // 防止影响页面
    iframe.style.height = 0;  // 防止影响页面
    iframe.src = url; 
    document.body.appendChild(iframe);  // 这一行必须,iframe挂在到dom树上才会发请求
    // 5分钟之后删除(onload方法对于下载链接不起作用,就先抠脚一下吧)
    setTimeout(()=>{
      iframe.remove();
    }, 5 * 60 * 1000);
}


export default {

   data() {
       return {
            orderAttachment: [
                              {attachPath: 下载地址1},
                              {attachPath: 下载地址2}
                            ]
       }

    }

   methods:{
     bulkDownload(){
          var that = this;
          for(var i =0;i<that.orderAttachment.length;i++){  //循环遍历调用downloadFile方法
            const url = that.orderAttachment[i].attachPath;
             downloadFile(url);         
          }
      }, 
   }

}

iframe 不会相互影响,可以连续下载哦!

喜欢就点个赞吧

 

### Vue3 中实现文件保存至文件夹而不压缩 为了实现Vue3 项目中将多个文件保存到指定文件夹而不需要将其压缩成 ZIP 的功能,可以采用分片上传的方式处理大文件并逐个发送这些文件片段给服务器。这种方式不仅适用于单个大文件,也适合于多个较小的文件。 #### 使用 HTML 和 JavaScript 进行文件选择与读取 通过 `<input type="file">` 元素让用户可以选择要上传的一个多个文件: ```html <input id="filesInput" type="file" multiple> ``` 当用户选择了文件之后,可以通过 `FileReader API` 者更高效的 `Blob.slice()` 方法来分割文件,并创建对应的 File 对象列表用于后续操作[^1]。 对于每个选中的文件对象,可以直接利用其原始数据流进行传输而不是先打包再解包,从而减少不必要的计算开销和潜在的风险点。 #### 利用 Axios 发送请求 考虑到前后端交互的需求,在前端部分推荐使用 axios 库来进行 HTTP 请求管理。Axios 支持 Promise 并允许设置自定义配置项如超时时间、取消令牌等特性,非常适合用来构建可靠的异步调用逻辑。 下面是一个简单的例子展示如何遍历所选文件并将它们逐一提交给后端服务接口: ```javascript const files = document.getElementById('filesInput').files; for (let i = 0; i < files.length; i++) { const formData = new FormData(); formData.append('file', files[i]); await axios.post('/upload-endpoint', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); } ``` 此代码段假设存在一个名为 `/upload-endpoint` 的 RESTful 接口负责接收来自客户端的数据流并妥善存储起来;实际开发过程中应当依据具体业务场景调整 URL 路径以及参数名称等内容[^2]。 #### 后端处理方案概述 针对 Java/Spring Boot 技术栈而言,可以在控制器层编写专门的方法接受 MultipartFile 类型参数表示待写入磁盘的目标文件实体。注意这里并不涉及任何关于 ZIP 归档的操作流程——即接收到什么就直接写出什么,保持最直观的形式不变。 另外值得注意的是,由于涉及到较大的二进制资料流动,建议适当提高 Tomcat 容器内有关最大 POST Body Size 及 Upload Timeout 的默认阈值限制以确保整个过程顺利完成[^3]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值