el-upload accept在文件列表中没有过滤
时间: 2023-10-27 16:17:42 浏览: 87
elemetUi 组件--el-upload实现上传Excel文件的实例
5星 · 资源好评率100%
`el-upload` 组件使用 `accept` 属性可以限制上传的文件类型,但这并不会在文件列表中过滤掉不符合要求的文件。如果需要在文件列表中过滤掉不符合要求的文件,可以在上传前对文件进行检查并手动删除不符合要求的文件。
以下是一个示例代码,演示如何在上传前检查文件类型并手动删除不符合要求的文件:
```html
<template>
<div>
<el-upload
ref="upload"
class="upload-demo"
action="/upload"
:before-upload="beforeUpload"
:on-success="onSuccess"
:on-error="onError"
:on-exceed="handleExceed"
:limit="3"
:file-list="fileList"
:accept="accept"
multiple>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
fileList: [],
accept: 'image/jpeg,image/png',
};
},
methods: {
beforeUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isPNG = file.type === 'image/png';
const isLt500K = file.size / 1024 < 500;
if (!isJPG && !isPNG) {
this.$message.error('上传图片只能是 JPG/PNG 格式!');
return false;
}
if (!isLt500K) {
this.$message.error('上传图片大小不能超过 500KB!');
return false;
}
return true;
},
onSuccess(response, file, fileList) {
this.$message.success('上传成功!');
this.fileList = fileList;
},
onError(error, file, fileList) {
this.$message.error('上传失败!');
this.fileList = fileList;
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${fileList.length + files.length} 个文件`);
},
},
};
</script>
```
在 `beforeUpload` 方法中,我们对文件类型和文件大小进行了检查。如果不符合要求,就显示对应的错误信息并返回 `false`,这样 `el-upload` 就会停止上传操作。如果文件符合要求,则返回 `true`,继续执行上传操作。
在 `onSuccess` 和 `onError` 方法中,我们更新了文件列表 `fileList`,以便在页面上显示上传的文件。
另外,在 `handleExceed` 方法中,我们处理了上传文件数量超出限制的情况,并显示了对应的提示信息。
阅读全文