返回顶部
首页 > 资讯 > 精选 >element自定义多文件上传触发多次on-change问题怎么解决
  • 541
分享到

element自定义多文件上传触发多次on-change问题怎么解决

2023-07-05 17:07:16 541人浏览 薄情痞子
摘要

这篇文章主要介绍“element自定义多文件上传触发多次on-change问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“element自定义多文件上传触发多次on-change问题怎么解

这篇文章主要介绍“element自定义多文件上传触发多次on-change问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“element自定义多文件上传触发多次on-change问题怎么解决”文章能帮助大家解决问题。

    element自定义 多文件上传 触发多次on-change

    由于项目需要,图片上传需要进行压缩之后在调用接口,那就只能走自定义上传

    自定义上传关键在于:

    • action  = #

    • :auto-upload="false"

    <el-upload    ref="upload"    action="#"  // 上传入口改成 #    :multiple="true" // 多文件上传开启    :on-change="handleChange" // 改变监听    :file-list="fileList"  //文件列表    :auto-upload="false" // 自动上传关闭>    <i class="el-icon-plus"></i></el-upload>

    由于 auto-upload 设置为 false 之后,before-upload 会失效,所以上传的事件之前体现在 change 里。

    但是这样呢在上传文件时无论是多图还是单图,在上传后都会走2次 handleChange ,

    此时我们需要一个防抖方法,来限制它。

    handleChange(file, fileList) {    //  防抖  let length = fileList.length  this.maxLength = Math.max(length, this.maxLength)  setTimeout(() => {    if (length === this.maxLength) {      // 你的上传文件逻辑    }  }, 100)}

    this.maxLength 默认设置 0 就行,要记得在上传成功(完成)后需要设置为默认 0。

    下面附上我完整的代码

    change 事件

    handleChange(file, fileList) {    //  防抖  let length = fileList.length  this.maxLength = Math.max(length, this.maxLength)  setTimeout(() => {    if (length === this.maxLength) {        // 图片验证      this.uploadFilesVerification(fileList)    }  }, 100)}

    图片验证: uploadFilesVerification

    // 图片验证async uploadFilesVerification(fileList) {  let resFileList = []  for (const key in fileList) {    console.log('fileList[key] :>> ', fileList[key])    // 判断文件大小(5M)    if (fileList[key].size > 1024 * 1024 * 5) {      this.$message.warning('图片大小不可以超过5M')      return    }    // 图片压缩(这里用的 lrz,项目不需要可以忽略)    const lrzData = await lrz(fileList[key].raw, { quality: 0.5 })    // 内容验证    //  xxxx     resFileList.push(lrzData.origin)  }   // 上传图片  this.customUploadFn(resFileList) }

    自定义上传:customUploadFn

    // 自定义上传async function customUploadFn(fileList) {  let fORM = new FormData()  fileList.forEach((item) => {    form.append('files', item)  })  const { data } = await uploadFiles(form) // 上传 api 接口  console.log('data :>> ', data)  data.forEach((item) => {    this.GoodsImgList.push(item) // 图片回显数组  })  this.fileList = [] // 清空图片已经上传的图片列表(绑定在上传组件的file-list)  this.maxLength = 0 // 恢复默认值}

    el-upload自定义上传触发多次change事件解决

    昨天在做项目时,有个附件上传的需求,需要使用formdata上传文件,并且支持多文件上传,使用el-upload on-change时发现会调用多次,以下是我整理出来规避的方法。

    Vue部分:

    <el-upload :on-change="handleUpload" :on-remove="handleRemove" :auto-upload="false" :show-file-list="false" drag action="#" ref="upload" multiple  >  <div class="el-upload__text">拖拽文件或点击上传</div></el-upload>

    ts/js部分:

      // 附件上传  private handleUpload(file, fileList) {    let length = fileList.length;    this.maxFileLength = Math.max(length, this.maxFileLength)    setTimeout(() => {      if (this.maxFileLength !== length) {        return      }      fileList.forEach(item => {        this.fileList.push(item.raw)      })    }, 0)  }

    定义一个全局变量maxFileLength 用于计算当前上传次数,如果上传次数等于上传文件的数量长度则将文件放到当前下发文件的参数中。

    关于“element自定义多文件上传触发多次on-change问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: element自定义多文件上传触发多次on-change问题怎么解决

    本文链接: https://lsjlt.com/news/353760.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • element自定义多文件上传触发多次on-change问题怎么解决
      这篇文章主要介绍“element自定义多文件上传触发多次on-change问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“element自定义多文件上传触发多次on-change问题怎么解...
      99+
      2023-07-05
    • vant-list上拉加载onload事件触发多次问题及解决
      目录vant-list上拉加载onload事件触发多次场景一、基础用法二、List 的运行机制是什么?三、为什么 List 初始化后会立即触发 load 事件?四、为什么会连续触发 ...
      99+
      2023-01-17
      vant-list vant-list上拉加载 onload触发多次
    • php上传中文文件无法上传问题怎么解决
      php上传中文文件无法上传的解决办法:1、通过“iconv("GBK", "UTF-8", $content);”方法将中文字符编码转换一下;2、将文件重命名即可。本教程操作环境:Windo...
      99+
      2023-05-14
      php 文件
    • element-ui select多选绑定回显值问题怎么解决
      本篇内容主要讲解“element-ui select多选绑定回显值问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“element-ui select多选绑定回显值问...
      99+
      2023-07-05
    • Element组件beforeUpload上传前限制失效问题怎么解决
      本篇内容介绍了“Element组件beforeUpload上传前限制失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Eleme...
      99+
      2023-07-05
    • 怎么解决php上传文件出错问题
      这篇文章将为大家详细讲解有关怎么解决php上传文件出错问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php上传文件出错的解决办法:1、在php.ini配置文件中设置“post_max_size”的值;...
      99+
      2023-06-08
    • 怎么解决php不能上传中文文件问题
      这篇文章主要介绍“怎么解决php不能上传中文文件问题”,在日常操作中,相信很多人在怎么解决php不能上传中文文件问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php不能上传中文文件问题”的疑惑有所...
      99+
      2023-06-20
    • 怎么解决php没有文件被上传问题
      这篇文章主要讲解了“怎么解决php没有文件被上传问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决php没有文件被上传问题”吧!php没有文件被上传的解决办法:1、修改php.ini...
      99+
      2023-06-25
    • php文件名相同不上传问题怎么解决
      如果在上传过程中遇到了相同的文件名问题,可以考虑以下几种解决方案:1. 重命名文件:可以手动将其中一个文件进行重命名,例如添加一个后...
      99+
      2023-10-07
      php
    • SpringBoot上传文件大小受限问题怎么解决
      这篇文章主要介绍“SpringBoot上传文件大小受限问题怎么解决”,在日常操作中,相信很多人在SpringBoot上传文件大小受限问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoo...
      99+
      2023-06-30
    • axios发送post请求上传文件到后端的问题怎么解决
      这篇“axios发送post请求上传文件到后端的问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“axios发送po...
      99+
      2023-06-30
    • 怎么使用php解决大文件分片上传问题
      小编给大家分享一下怎么使用php解决大文件分片上传问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前提首先, 上传超大的文件, 前端要和后端相互配合文件上传要使...
      99+
      2023-06-20
    • Java单个TCP连接发送多个文件的问题怎么解决
      这篇文章主要介绍“Java单个TCP连接发送多个文件的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java单个TCP连接发送多个文件的问题怎么解决”文章能帮助大家解决问题。使用一个TC...
      99+
      2023-07-06
    • vue自定义组件@click点击失效问题怎么解决
      这篇文章主要讲解了“vue自定义组件@click点击失效问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue自定义组件@click点击失效问题怎么解决”吧!自定义组件@click...
      99+
      2023-06-30
    • 怎么解决springboot读取自定义配置文件时出现乱码问题
      这篇文章主要介绍“怎么解决springboot读取自定义配置文件时出现乱码问题”,在日常操作中,相信很多人在怎么解决springboot读取自定义配置文件时出现乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
      99+
      2023-06-25
    • web前端大文件上传与下载问题怎么解决
      这篇文章主要介绍了web前端大文件上传与下载问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端大文件上传与下载问题怎么解决文章都会有所收获,下面我们一起来看看吧。一、问题日常业务中难免出现前端...
      99+
      2023-07-04
    • 怎么解决vue点击弹窗自动触发点击事件的问题
      这篇文章给大家分享的是有关怎么解决vue点击弹窗自动触发点击事件的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。业务场景:使用vue +element ui 的el-dialog,点击弹窗之后,默认加载第一个...
      99+
      2023-06-15
    • 组件中多个el-upload存在导致上传图片失效问题怎么解决
      本篇内容介绍了“组件中多个el-upload存在导致上传图片失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!组件中多个el-u...
      99+
      2023-07-05
    • java多线程写文件出现冲突问题怎么解决
      在多线程写文件时,可能会出现冲突问题,可以通过以下几种方式解决: 使用锁(Lock):在文件写入操作之前,先获取一个锁,其他线程...
      99+
      2024-02-29
      java
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作