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的递归之递归与循环示例介绍
Aug 05 Javascript
js闭包引起的事件注册问题介绍
Mar 29 Javascript
Easyui 之 Treegrid 笔记
Apr 29 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 Javascript
js关于getImageData跨域问题的解决方法
Oct 14 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
原生js实现下拉选项卡
Nov 27 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 Javascript
ant design的table组件实现全选功能以及自定义分页
Nov 17 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 ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python selenium文件上传方法汇总
2020/11/19 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
英格兰足协官方商店:England Store
2019/07/12 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
校本教研工作制度
2014/01/22 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
决心书范文
2014/03/11 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
拆迁委托协议书
2014/09/15 职场文书
报到证办理个人委托书
2014/10/06 职场文书
升职感谢信
2015/01/22 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
话题作文之自信作文
2019/11/15 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python