解决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 相关文章推荐
html下载本地
Jun 19 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
jquery实现倒计时效果
Dec 14 Javascript
精通JavaScript的this关键字
May 28 Javascript
Bootstrap每天必学之折叠
Apr 12 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
将angular.js项目整合到.net mvc中的方法详解
Jun 29 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
Sep 06 Javascript
微信js-sdk 录音功能的示例代码
Nov 01 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 如何向 MySQL 发送数据
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
javascript中Object使用详解
2015/01/26 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python 修改本地网络配置的方法
2019/08/14 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
初一生物教学反思
2014/01/18 职场文书
投资意向书
2014/07/30 职场文书
导游词之南京中山陵
2019/11/27 职场文书