JavaScript

超轻量级php框架startmvc

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

更新时间:2020-07-23 03:30:01 作者:startmvc
我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示

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

项目中用的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()不生效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

vue2.0 element-ui