element-plus图片上传,尺寸,格式,大小前端校验
在使用Element Plus的<el-upload>
组件进行图片上传时,可以利用其before-upload
钩子函数来实现前端图片尺寸、格式和大小的验证。以下是一个简单的示例代码:
<template>
<el-upload
action="https://jsonplaceholder.typicode.com/posts/"
:before-upload="beforeUpload"
list-type="picture-card"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
<script>
export default {
methods: {
beforeUpload(file) {
const isSizeValid = file.size / 1024 / 1024 < 2; // 小于2MB
const isTypeValid = ['image/jpeg', 'image/png', 'image/gif'].includes(file.type);
const isDimensionValid = new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = e => {
const image = new Image();
image.onload = () => {
const isWidthValid = image.width >= 800;
const isHeightValid = image.height >= 800;
if (isWidthValid && isHeightValid) {
resolve(true);
} else {
reject(new Error('图片尺寸不满足要求'));
}
};
image.onerror = () => reject(new Error('图片加载失败'));
image.src = e.target.result;
};
reader.readAsDataURL(file);
});
return Promise.all([isSizeValid, isTypeValid, isDimensionValid]).then(values => values.every(Boolean));
},
},
};
</script>
在这个示例中,beforeUpload
方法检查了文件的大小、类型和尺寸。它首先检查文件大小是否小于2MB,然后检查文件类型是否为jpeg、png或gif之一。接下来,它使用FileReader
和Image
对象来加载图片并验证其宽度和高度是否都大于或等于800像素。如果所有验证都通过,则返回true
允许上传,否则返回false
或抛出错误来阻止上传。
评论已关闭