位置: IT常识 - 正文

Vue 批量上传,使用 el-upload 实现批量上传文件只调用一个请求,只需要一个上传按钮(vue批量上传图片至oss)

编辑:rootadmin
Vue 批量上传,使用 el-upload 实现批量上传文件只调用一个请求,只需要一个上传按钮 背景介绍需求背景后端需要批量对上传的文件进行处理原生的 el-upload 批量上传会多次调用上传接口,不支持一次调用前端需要对选择的文件进行批量校验

推荐整理分享Vue 批量上传,使用 el-upload 实现批量上传文件只调用一个请求,只需要一个上传按钮(vue批量上传图片至oss),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue批量上传图片至oss,vue批量上传图片,vue批量上传文件,vue批量上传图片,vue批量上传文件报错,vue批量上传图片至oss,vue批量上传文件,vue批量上传图片,内容如对您有帮助,希望把文章链接给更多的朋友!

2、使用 el-upload是因为:

项目是基于饿了吗组件库开发的,不想再引入其他的组件进行开发;原生的input实现上传样式处理也比较费劲。

在网上看了大家的实现方案,发现要不然就是使用 input 进行批量上传;使用 el-upload的场景都需要两个按钮【选择文件、上传】才能实现上面的诉求,考虑到这样的交互都不太友好,所以使用自己的方式实现。

一、实现效果

先来说说实现的效果,点击上传按钮,弹出文件选择,选择后直接调用上传接口进行上传,只调用一个接口。

项目效果 功能效果

Vue 批量上传,使用 el-upload 实现批量上传文件只调用一个请求,只需要一个上传按钮(vue批量上传图片至oss)

请求 template代码 request代码

二、具体说明0. data变量说明data() { return { uploadCfg: { fileList: [], // 默认绑定的文件列表 validFileList: [] // 通过校验的文件列表 } }; }

下面来解释下以上template中重要的两个组件属性

1. handleBeforeUpload

上传文件之前的校验:至少要包含一个excel文件;如果校验通过,请求接口;如果校验不通过,终止接口的请求,并给出校验不通过的提示。

/** * @desc 上传之前进行文件校验 * @param file 当前文件 */handleBeforeUpload(file){ let vm = this; return new Promise((resolve, reject) => { // 收集文件列表 this.uploadCfg.validFileList.push(file); // 校验文件列表 vm.handleDebounceVarifyFile(); setTimeout(function (){ if (!_.isEmpty(vm.uploadCfg.validFileList)){ resolve(true); } else { reject(true); } }, 100); });}

可以看到这里返回了Promise,看下官方给的解释,如下图,就是说支持用 Promise的方式返回结果,没有直接返回 false的原因下面说明一下。

el-upload的handleBeforeUpload会在批量上传的时候触发多次,即选择几个文件就会调用几次,我们的需求是,至少要包含一个excel文件,这种情况下需要收集所有选中的文件进行批量校验,单个的触发是不能满足的,所以这里使用了一个【防抖函数】handleDebounceVarifyFile通过短时间内最后一次触发,来达到批量校验文件的效果。 因为会多次触发,所以这里的校验函数,返回的是一个Promise。

下面是防抖函数的逻辑说明,具体可以根据自己的应用场景去开发这里的逻辑

/** * @desc 防抖触发文件上传前,保证批量校验 */handleDebounceVarifyFile: _.debounce(function (){ let excel_file = {}; if (_.isEmpty(this.uploadCfg.validFileList)){ return; } excel_file = this.uploadCfg.validFileList.find(item => { return /\.(xls)|\.(xlsx)$/.test(item.name); }); // 如果文件校验不合理,清空合法文件列表,并提示 if (_.isEmpty(excel_file)){ this.uploadCfg.validFileList = []; this.$message.warning('至少上传一个xls或者xlsx格式的文件!'); }}, 20)2. handleUploadHttp

这里使用自定义的上传方法,和上传前校验一样, el-ipload默认会多次调用上传接口,我们需要做的也是使用防抖的思路,控制最后一次触发上传回调的时候去构造批量的文件数据,请求接口,下面是具体代码:

/** * @desc 自定义上传 */ handleUploadHttp(){ this.handleDebounceUpload(); }/** * @desc 防抖触发文件上传前,保证批量上传 */ handleDebounceUpload: _.debounce(function (){ if (_.isEmpty(this.uploadCfg.validFileList)){ return; } let formData = new FormData(); this.uploadCfg.validFileList.forEach((item_file) =>{ formData.append(`files`,item_file); }); batchUploadApi.uploadXsxx(formData).then(()=> { this.$message.success('附件已上传成功,请等待数据入库!'); this.uploadCfg.validFileList = []; }).catch(err => { console.log('批量上传附件失败', err); });}, 20)三、结语

至此,个人认为比较完美的解决了问题,分享出来希望可以帮助到有同样问题的人~

本文链接地址:https://www.jiuchutong.com/zhishi/287284.html 转载请保留说明!

上一篇:最贵的域名是什么(最贵的域名是什么名字)

下一篇:ElementPlus DateTimePicker日期时间选择器限制可选时间范围(精确时分秒)

  • 抒写幸福人生(幸福人生的诗)

    抒写幸福人生(幸福人生的诗)

  • 华为手环7怎么换壁纸(华为手环7怎么充电)

    华为手环7怎么换壁纸(华为手环7怎么充电)

  • 米游社讨论区签到在哪(米游社讨论区签到奖励)

    米游社讨论区签到在哪(米游社讨论区签到奖励)

  • 苹果12有5g吗件(苹果12有5g的吗?)

    苹果12有5g吗件(苹果12有5g的吗?)

  • 美团我的钱包查找方法是什么(美团钱包在哪儿看)

    美团我的钱包查找方法是什么(美团钱包在哪儿看)

  • 华为nova5pro支持投屏吗(华为nova5pro支持红外线功能吗)

    华为nova5pro支持投屏吗(华为nova5pro支持红外线功能吗)

  • 微信怎么隐藏windows已登录(微信怎么隐藏转账后面的名字)

    微信怎么隐藏windows已登录(微信怎么隐藏转账后面的名字)

  • oppo高端机有哪些型号(oppo的高端手机)

    oppo高端机有哪些型号(oppo的高端手机)

  • 电脑更新后无法进入系统(电脑更新后无法连接无线网)

    电脑更新后无法进入系统(电脑更新后无法连接无线网)

  • 腾讯会议录屏没有声音(腾讯会议录屏没有人像)

    腾讯会议录屏没有声音(腾讯会议录屏没有人像)

  • p40视频自带美颜吗(p40视频有美颜吗)

    p40视频自带美颜吗(p40视频有美颜吗)

  • 华为荣耀v10怎么清除后台运行(华为荣耀v10怎么关闭下拉搜索)

    华为荣耀v10怎么清除后台运行(华为荣耀v10怎么关闭下拉搜索)

  • itunes能备份app吗(itunes能备份app数据吗)

    itunes能备份app吗(itunes能备份app数据吗)

  • 手机克隆需要流量吗(手机克隆需要流量不)

    手机克隆需要流量吗(手机克隆需要流量不)

  • a2133是什么型号(a2133是什么型号无限开机紫屏)

    a2133是什么型号(a2133是什么型号无限开机紫屏)

  • 什么是双模5g手机(双模5g手机有什么好处)

    什么是双模5g手机(双模5g手机有什么好处)

  • 华为信任在哪里设置(华为信任app)

    华为信任在哪里设置(华为信任app)

  • 手机上怎么交养老保险(手机上怎么交养老保险微信)

    手机上怎么交养老保险(手机上怎么交养老保险微信)

  • oppo手机总是闪屏怎么办(oppo手机总是闪退怎么办)

    oppo手机总是闪屏怎么办(oppo手机总是闪退怎么办)

  • oppo手机如何开关机(oppo手机如何开5g)

    oppo手机如何开关机(oppo手机如何开5g)

  • 手机指纹键怎么更换(手机指纹键怎么拆下来)

    手机指纹键怎么更换(手机指纹键怎么拆下来)

  • 空开nxb代表什么(空开nxb125意思)

    空开nxb代表什么(空开nxb125意思)

  • 华为智慧能力是干嘛的(华为智慧能力是做什么的)

    华为智慧能力是干嘛的(华为智慧能力是做什么的)

  • wallpaper有手机版么(wallpaper有手机版吗贴吧)

    wallpaper有手机版么(wallpaper有手机版吗贴吧)

  • 华为耳机防水吗(华为耳机防水吗,掉水里了怎么办)

    华为耳机防水吗(华为耳机防水吗,掉水里了怎么办)

  • 创维盒子怎么连接电视(创维盒子怎么连接网络)

    创维盒子怎么连接电视(创维盒子怎么连接网络)

  • 小狐狸ChatGPT付费创作系统1.92独立版 + H5端 + 小程序前端+新增AI绘画功能 系统源码体验安装教程(小狐狸803050)

    小狐狸ChatGPT付费创作系统1.92独立版 + H5端 + 小程序前端+新增AI绘画功能 系统源码体验安装教程(小狐狸803050)

  • 劳务外包合同需要交税吗
  • 企业收入为0要报企业所得税吗
  • 无形资产摊销为什么计入管理费
  • 小规模企业所得税税率多少
  • 核定征收企业需要做账吗
  • 机票行程单丢了可以重新打吗
  • 工程类发票项目分类
  • 小微企业免征的增值税要交所得税吗
  • 购买车位需要交哪些税
  • 政府性搬迁补偿收入的税务处理
  • 现汇账户和现钞账户可以转账吗
  • 厂房进项抵扣
  • 暂估收入是否暂列金额
  • 纳税人如何办理纳税申报
  • 蓝字发票是什么票据类型
  • 进口商品买卖的关键环节
  • 可供出售金融资产是指什么
  • 酒店预收款是什么意思
  • 软件开发增值税即征即退2022
  • 社保费现金收缴管理制度
  • bios如何解除电脑密码
  • mac怎么禁止开机启动
  • 以前年度应收账款错误如何调整
  • 幼儿园资金收支管理财务制度
  • 在建工程预付款可以计入费用么
  • 招标公司在招标过程中的注意事项
  • bug is
  • 补充养老保险税收规定扣除率
  • msoobe.exe是什么
  • fpzs1是什么文件可以删除吗
  • 商业银行提取的贷款损失准备金
  • 一次性收入怎么交税
  • visual studio code 调试php方法(图文详解)
  • 进口应税消费品所支付的金额不包括
  • 无形资产期末余额在哪方
  • 劳务费开发票后还需要交个税吗
  • 大数据项目之数据采集
  • vue的slice
  • php读取文件内容的方法和函数
  • vscode终端显示
  • 营业外支出明细账
  • mysql转数字为字符串
  • 综合所得算税公式
  • 残保金是计入管理费用还是?
  • 如何评价福建省
  • 计提和发放工资的会计科目
  • 增值税专用发票查询系统官方网站
  • 工会经费怎么计提及使用
  • 管理费用现金流量附表指定
  • 纳税人为风险纳税人怎么办
  • 研发支出怎么结转到管理费用
  • 所有者权益类期末贷方余额公式
  • 多计提房产税怎么冲销
  • 前程无忧效果怎么样
  • 应交税费中应交税金包含个税吗
  • 营业外收入是否影响营业利润
  • 收到银行结息收入怎么做会计分录
  • 现金支票取现的法律规定
  • 清产核资评估报告
  • xp系统net framework 3.5
  • mac虚拟机安装教程win10正版
  • centos7 cp命令
  • imac触发角
  • win10怎样永久激活
  • mgaqdesk.exe进程有什么作用 mgaqdesk进程查询
  • win7win8win10哪个流畅
  • win8电脑锁屏壁纸怎么设置方法
  • win7系统玩英雄联盟
  • win7账户不见了
  • android的intent介绍
  • 使用linux的收获心得
  • 安卓初始化
  • 详解各种汽油一吨等于多少升
  • android mvp mvc
  • 税务系统怎么修改办税人
  • 医保月底结算规定是什么
  • 湖南电子税务局密码错误5次
  • 驻马店燃气投诉电话号码
  • 医院等级怎么查询系统
  • 电子税务局如何解绑办税人员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设