el-upload接口一次上传多张图片

文章介绍了如何利用防抖(debounce)技术优化文件上传功能。在Vue组件中,通过在`beforeUpload`做文件校验,然后自定义`handleUploadHttp`上传方法,结合防抖函数限制上传频率,确保在用户停止选择文件后一段时间内一次性处理所有文件的上传,从而提高性能和用户体验。

一.实现思路

       无他,唯防抖尔

二.html块

<el-upload class="upload-cl" accept=".pdf" action="#" :before-upload="beforeUpload"
          :http-request="handleUploadHttp" multiple :file-list="fileList">
          <el-button size="small" icon="el-icon-plus" type="primary">文件上传</el-button>
        </el-upload>

1. beforeUpload做文件校验

2.handleUploadHttp自定义上传方法

三.逻辑函数

//自定义上传方法
handleUploadHttp(fileData) {
       //定义一个全局数组uploadFileList来做存储
      this.uploadFileList.push(fileData.file);
      this.debounceUpload();
    },

//中间层写防抖,防抖可以用lodash的,也可以用自己写的
debounceUpload: _debounce(function () {
      this.uploadBatch(); 
    }, 20),

 uploadBatch() {
   //这里打印出来的数组就是多个文件的数据,且仅会打印一次
  console.log('this.uploadFileList',this.uploadFileList);    
 },

 四.附录:防抖函数

// 防抖
/**
 * 概念:在事件被触发n秒后再执行回调,在n秒内执行,只会重新计时。
 * 举例:当输入框不断输入值的时候,使用防抖节约请求资源
 * 场景:
 * 1. 输入框搜索联想,只在最终输入结束的时候触发
 * 2. window监听resize,调整浏览器窗口大小。
 */
export function _debounce(fn, delay) {
  var delay = delay || 500;
  var timer;
  return function () {
    var that = this;
    var args = arguments;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(function () {
      timer = null;
      fn.apply(that, args);
    }, delay);
  };
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路追求匠人精神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值