解决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 相关文章推荐
JavaScript Archive Network 集合
May 12 Javascript
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
JQuery获取样式中的background-color颜色值的问题
Aug 20 Javascript
js实例属性和原型属性示例详解
Nov 23 Javascript
jquery实现的缩略图预览滑块实例
Jun 25 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
node文件上传功能简易实现代码
Jun 16 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
webpack4从0搭建组件库的实现
Nov 29 Javascript
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
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学习之PHP运算符
2006/10/09 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
Js获取事件对象代码
2010/08/05 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python 队列详解及实例代码
2016/10/18 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python 同时运行多个程序的实例
2019/01/07 Python
Python构建图像分类识别器的方法
2019/01/12 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
python反扒机制的5种解决方法
2021/02/06 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
运动会400米加油稿(8篇)
2014/09/22 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python