解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题


Posted in Javascript onAugust 24, 2018

我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传。

项目中用的element-ui是V1.4.3

<el-upload
   class="upload-demo" drag
   ref="fileUpload"
   :action="urls.fileUpload"
   :on-success="handleUploadSuccess"
   :on-error="handleUploadError"
   :on-progress="progressUpload"
   :before-upload="beforeUpload"
   show-file-list
   multiple>
   <i class="el-icon-upload"></i>
  <div class="el-upload__text">点击上传,或者拖拽到这里</div>
 </el-upload>

解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题

代码中我是将before-upload方法返回false,然后点击确认之后,调_this.$refs.fileUpload.submit();但是在点击确定之后,文件还是没有上传,后面去看了element-ui源码,发现before-upload方法如果返回false,submit()方法是会被拦截的。
还有第二个问题,就是取消时_this.$refs.fileUpload.clearFiles();我调的clearFiles()方法,这个方法会把文件列表全部清空,我只想删除我当时取消的那个文件。
后面将这两句换成了如下两句:

解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题

继续上传: _this.$refs.fileUpload.$children[0].post(file);

取消时在文件列表中删除该文件:_this.$refs.fileUpload.handleRemove(file);

补充:VUE2.0 element upload使用

<template>
 <div class="uptemp">
  <el-upload
   class="upload-demo"
   ref="upload"
   multiple="false"
   action="/web/api/uploadFile"
   :on-preview="handlePreview"
   :on-remove="handleRemove"
   :on-change="handleChange"
   :before-upload="beforeUpload"
   :file-list="fileList"
   :auto-upload="false"
   :multiple="false">
   <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
   <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">导入</el-button>
   <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div>
  </el-upload>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    fileList: []
   }
  },
  mounted: function () {
   //加载完页面执行的函数
  },
  methods: {
   submitUpload() {
    this.$refs.upload.submit();
   },
   handleRemove(file, fileList) {
    console.log(file, fileList);
   },
   handlePreview(file) {
    console.log(file);
   },
   handleChange(file, fileList){
    console.log(file);
    console.log(fileList);
   },
   beforeUpload: function (file) {
    console.log(file)
    //这里是重点,将文件转化为formdata数据上传
    let fd = new FormData()
    fd.append('file', file)
    this.$http.post('/web/api/uploadFile', fd).then((res) => {
     console.log(res)
    }, (res) => {
     console.log(res)
    });
    return false;
   }
  },
  components: {
//      组件
  }
 }
</script>
<style scoped>
</style>
<style>
 .uptemp .el-upload-list {
  position: absolute;
  left: 140px;
  top: 0;
  width: 50%;
 }
 .uptemp {
  position: relative;
 }
 .uptemp .el-upload-list .el-upload-list__item {
  margin-top: 0;
 }
</style>

总结

以上所述是小编给大家介绍的解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 #Javascript
Vue源码解读之Component组件注册的实现
Aug 24 #Javascript
element-ui 关于获取select 的label值方法
Aug 24 #Javascript
微信小程序用户信息encryptedData详解
Aug 24 #Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 #Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
Aug 24 #Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 #Javascript
You might like
php中current、next与reset函数用法实例
2014/11/17 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jQuery load方法用法集锦
2011/12/06 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
js实现AI五子棋人机大战
2020/05/28 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
tensorflow 查看梯度方式
2020/02/04 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python实现猜单词游戏
2020/05/22 Python
python 写一个性能测试工具(一)
2020/10/24 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
资料员的岗位职责
2013/11/20 职场文书
英语商务邀请函范文
2014/01/16 职场文书
总经理岗位职责范本
2014/02/02 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
道德模范事迹材料
2014/12/20 职场文书
监察建议书
2015/02/04 职场文书
地球一小时活动总结
2015/02/27 职场文书
导游词之西安骊山
2019/12/20 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android