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

一.实现思路

       无他,唯防抖尔

二.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);
  };
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在使用 Element UI 的 el-upload 进行批量上传时,通过配置一些参数和编写一些代码可以实现只调用一次接口。 首先,需要设置 el-upload 组件的 action 属性为接口的地址,同时将属性 multiple 设置为 true,以支持多文件上传。 接下来,可以使用 el-upload 组件的 before-upload 属性,设置一个方法来处理上传前的逻辑。在这个方法中,可以获取到所有的文件和文件列表,然后将它们合并成一个 FormData 对象,同时将这个对象作为参数传递给接口。这样,通过一次接口调用就可以实现批量上传。 具体操作如下所示: ```html <template> <el-upload action="your_api_url" :multiple="true" :before-upload="handleBeforeUpload" > <el-button type="primary">点击上传</el-button> </el-upload> </template> <script> export default { methods: { handleBeforeUpload(file) { // 获取所有的文件和文件列表 const fileList = this.$refs.upload.uploadFiles; // 合并为 FormData 对象 const formData = new FormData(); fileList.forEach(file => { formData.append('files', file.raw); }); // 调用接口 this.$http.post('your_api_url', formData).then(response => { // 处理接口返回的数据 }); // 阻止 el-upload 组件默认的上传行为 return false; } } } </script> ``` 以上就是使用 Element UI 的 el-upload 组件实现批量上传只调用一次接口的方法。通过设置适当的属性和编写相应的代码,可以在上传文件前合并所有文件为一个 FormData 对象,然后在接口调用时一次性传递这个对象,从而实现批量上传

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一路追求匠人精神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值