首页 > 编程 > JavaScript > 正文

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

2019-11-19 13:10:05
字体:
来源:转载
供稿:网友

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

项目中用的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>


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


继续上传: _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()不生效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表