解决element upload 自定义上传后移除文件再上传不触发beforeUpload
时间: 2023-08-02 10:30:45 浏览: 160
详解element上传组件before-remove钩子问题解决
如果你在 Element Upload 组件中使用了自定义上传方法,那么在移除文件再重新上传同一文件时仍然不会触发 beforeUpload 事件。这是因为在移除文件后,文件列表已经被清空,再次上传时会添加一个新的文件到文件列表中,导致 beforeUpload 不会被触发。
要解决这个问题,可以在上传之前手动将文件列表清空,然后再将文件添加到文件列表中。具体实现步骤如下:
1. 在 Upload 组件中设置 :auto-upload="false",表示不自动上传文件。
2. 在 beforeUpload 事件中手动将文件列表清空,然后再将文件添加到文件列表中。代码如下:
```
<template>
<el-upload
ref="upload"
class="upload-demo"
action="/upload"
:auto-upload="false"
:on-before-upload="handleBeforeUpload"
>
<el-button slot="trigger">选取文件</el-button>
<el-button style="margin-left: 10px;" type="primary" @click="handleUpload">上传文件</el-button>
</el-upload>
</template>
<script>
export default {
methods: {
handleBeforeUpload(file) {
// 在这里手动清空文件列表
this.$refs.upload.fileList = [];
// 将文件添加到文件列表中
this.$refs.upload.fileList.push(file);
// 返回 true 触发上传
return true;
},
handleUpload() {
// 执行上传操作
this.$refs.upload.submit();
},
},
};
</script>
```
这样就可以在移除文件再重新上传同一文件时触发 beforeUpload 事件了。
阅读全文