vue+element之解决upload组件上传文件失败后仍显示在列表上、自动上传、过滤、findIndex、splice、filter
<template>
<el-upload
:action="uploadUrl"
:on-success="handleSuccess"
:on-error="handleError"
:before-upload="beforeUpload"
:file-list="fileList"
list-type="text"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
export default {
data() {
return {
uploadUrl: 'your-upload-api-url',
fileList: []
};
},
methods: {
beforeUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
const isLt500K = file.size / 1024 / 1024 < 0.5;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!');
}
if (!isLt500K) {
this.$message.error('上传头像图片大小不能超过 500KB!');
}
return isJPG && isLt500K;
},
handleSuccess(response, file, fileList) {
this.$message.success('文件上传成功');
},
handleError(err, file, fileList) {
this.$message.error('文件上传失败');
// 清空fileList,避免上传失败的文件显示在列表中
this.fileList = [];
}
}
};
</script>
这个代码示例展示了如何在Vue.js和Element UI中使用<el-upload>
组件实现文件上传功能。它包括了自动过滤文件、错误处理以清空文件列表等功能。在用户尝试上传文件之前,beforeUpload
方法会检查文件类型和大小。如果文件不符合条件,它会阻止上传并给出错误提示。在上传失败时,handleError
方法会清空文件列表,从而避免显示失败的文件。
评论已关闭