vue Element Ui Upload 上传 点击一个按钮,选择多个文件后直接上传,使用防抖解决多次上传的问题。

问题:

在使用Element Ui  Upload 上传文件时,选择多个文件上传时,on-change事件会一个一个返回上传的文件,导致前端不知道什么时候可以拿到全部上传的文件,再一起调后台接口。

解决方法:

上传文件后,自动把文件传给后台,这里做了一个防抖,等待500ms后在传给后台

代码实现:

data() {

  return {

       fileList: [], //正式pdf文件

      timer: null,//防抖

  }

}

 <el-upload class="upload-demo" ref="enclosureUpload" accept=".docx" :file-list="fileList" action multiple  :limit="7"
        :show-file-list="false" :auto-upload="false" :on-change="handleFileChange"
        :on-exceed="handleExceed" >
        <el-button type="info" size="small" plain round >
          上传
      </el-button>
  </el-upload>
// 文件超出个数限制时的钩子
在Ant Design Vue库中,`a-upload`组件的`customRequest`属性通常用于自定义上传文件的行为,包括发送HTTP请求。如果你遇到上传多个文件时请求多次接口的问题,可能是由于每次点击“添加”按钮或提交表单时都触发了一次新的上传请求。 解决这个问题的关键在于如何控制上传过程。你可以通过以下几个步骤来处理: 1. 避免重复请求:在用户点击“添加”或提交表单前,检查当前已上传文件数组是否为空,或者是否已经有一个正在处理的请求。如果不是,再发起新的请求。 ```javascript <template> <a-upload :listType="listType" :customRequest="uploadFiles" ref="upload" ></a-upload> </template> <script> export default { methods: { uploadFiles(file) { if (this.updating || this.files.length === 0) { this.updating = true; // 发起实际的网络请求,这里假设你已经有了一个handleUpload函数 this.handleUpload(file); } }, handleUpload(file) { // 在此处处理文件上传,比如发送POST请求到服务器 // 请求完成后更新状态并清除标志 this.$axios.post('/api/upload', file) .then(() => { this.updating = false; this.files.push(file); // 将文件添加到列表 }) .catch((error) => { console.error(error); }); } } } </script> ``` 2. 使用Promise.all 或者 async/await 来并发管理多个请求:如果需要同时发送多个请求,可以将它们放入一个Promise.all对象里,等待所有请求完成后再进行下一步操作。 3. 错误处理:记得对每个请求进行错误处理,以便在出现问题时能及时反馈给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值