element-ui 中使用upload多文件上传只请求一次接口


Posted in Javascript onJuly 19, 2019

方法一

不使用组件内部的钩子

<el-upload
 class="upload-image"
 ref="upload"
 multiple
 :action="baseUrl"
 list-type="picture"
 :auto-upload="false"
 accept="image/*">
 <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
 <el-button size="small" type="success" @click="submitUpload">上传到服务器</el-button>
 <div slot="tip">只能上传jpg、png、gif 格式,大小不超过500KB的图片</div>
</el-upload>

js

点击上传服务器的按钮时调用这个函数,也就是说不走upload的钩子,不调用他的方法自己搞

submitUpload () {
   let { uploadFiles } = this.$refs.upload
   let form = new FormData()
   let status = true
   // 在这里对每一张图片进行大小的校验,如果不符合则提示,所有不符合的都提示,校验完成后只要有不符合条件的就不执行下面的操作
   uploadFiles.forEach(item => {
    const size = item.raw.size / 1024 <= 500
    if (!size) {
     this.$message.error(`${item.raw.name}大小超过500KB`)
     status = false
     return
    }
    form.append('image[]', item.raw)
   })
   if (!status) {
    return
   }
   // 符合条件后再将这个FormData对象传递给后端
   //调取接口上传form参数
   
 }

方法二

使用内部的回调去获取对应的

<el-upload
 class="upload-image"
 ref="upload"
 multiple
 :action="baseUrl"
 list-type="picture"
 :auto-upload="false"
 :before-upload="beforeImageUpload"
 :http-request="ImageRequest"
 accept="image/*">
 <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
 <el-button size="small" type="success" @click="submitUpload">上传到服务器</el-button>
 <div slot="tip">只能上传jpg、png、gif 格式,大小不超过500KB的图片</div>
</el-upload>

js

beforeImageUpload (file) { // 上传文件前的钩子对文件进行校验
  const size = file.size / 1024 < 500
  if (!size) {
   this.$message.error('上传图片大小不能超过 500KB!')
  }
  return size
}

上传前钩子返回false之后给文件就不会再往下执行下面的钩子了

因此在http-request的钩子就不会被执行,在该钩子中获取到的都是通过校验的file文件的信息

ImageRequest (file) {
  this.formData.append('image[]', file.file)
}

此时在这个formData 中的数据就是通过校验的数据

submitUpload () {
  this.formData = new FormData()
  // 手动触发上传
  this.$refs.upload.submit()
  // 此时所有的钩子已经执行完了formData 中存的是通过校验的数据
  // 此时在调用接口上传该数据
}

该方法在使用时不符合条件的文件会自动删除只留下符合条件的

可能是before-upload这个钩子的原因不符合之后他会去调用删除的钩子

因此使用方法一比这个要好很多

该方法节省了我们自己写样式以及预览,组件都帮你干了,你只要写逻辑就好啦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript开发时的五个注意事项
Dec 08 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
深入理解JavaScript中的并行处理
Sep 22 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
Less 安装及基本用法
May 05 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
vue-cli设置publicPath小记
Apr 14 Javascript
js实现数字跳动到指定数字
Aug 25 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 #Javascript
bootstrap table插件动态加载表头
Jul 19 #Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 #Javascript
VueJS 取得 URL 参数值的方法
Jul 19 #Javascript
vue自定义表单生成器form-create使用详解
Jul 19 #Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 #Javascript
JS开发 富文本编辑器TinyMCE详解
Jul 19 #Javascript
You might like
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
进一步理解Python中的函数编程
2015/04/13 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python多线程和队列操作实例
2015/06/21 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
django框架ModelForm组件用法详解
2019/12/11 Python
如何基于python实现不邻接植花
2020/05/01 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
一文读懂Python 枚举
2020/08/25 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
python中类与对象之间的关系详解
2020/12/16 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
安全生产标语
2014/06/06 职场文书
六年级学生评语大全
2014/12/26 职场文书
课程设计感想范文
2015/08/11 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python