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 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
Oct 28 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
Feb 02 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
JavaScript实现打字游戏
Feb 19 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
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
用YUI做了个标签浏览效果
2007/02/20 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
Jquery ui css framework
2010/06/28 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
python+django快速实现文件上传
2016/10/24 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python中dict()的高级用法实现
2019/11/13 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
详解rem 适配布局
2018/10/31 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
市政管理求职信范文
2014/05/07 职场文书
增员口号大全
2014/06/18 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
优秀党员事迹材料
2014/12/18 职场文书
煤矿安全保证书
2015/02/27 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
Java存储没有重复元素的数组
2022/04/29 Java/Android