element ui实现el-upload用户头像上传(单图上传)
在使用 Element UI 的 el-upload
组件实现用户头像上传时,可以参考以下示例代码:
<template>
<el-upload
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</template>
<script>
export default {
data() {
return {
imageUrl: ''
};
},
methods: {
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isLT2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLT2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
return isJPG && isLT2M;
}
}
};
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>
在这个例子中,el-upload
组件被用来上传用户头像。action
属性设置了一个模拟的 API 地址,实际应用中应该替换为真实的上传API。:show-file-list
设置为 false
来隐藏文件列表。handleAvatarSuccess
方法处理上传成功后的响应,并使用 URL.createObjectURL
生成一个新的图片URL。beforeAvatarUpload
方法进行图片格式和大小的校验。
请注意,这个例子中的上传地址和校验逻辑是为了演示而设置的,实际应用中需要替换为真实的上传API和相应的校验逻辑。
评论已关闭