我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传。
项目中用的element-ui是V1.4.3
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>
代码中我是将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使用
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">
选取文件
导入
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: {
// 组件
}
}
.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;
}
总结
以上所述是小编给大家介绍的解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网