element-ui上传头像
时间: 2023-09-04 17:16:01 浏览: 113
要在 element-ui 中上传头像,您可以使用 el-upload 组件。以下是一个简单的示例代码:
```html
<template>
<div>
<el-upload
class="avatar-uploader"
action="/your-upload-api"
:show-file-list="false"
:on-success="handleSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: '' // 存储上传后的头像地址
};
},
methods: {
handleSuccess(response) {
// 上传成功后,将服务器返回的头像地址存储在 imageUrl 中
this.imageUrl = response.data.url;
},
beforeAvatarUpload(file) {
// 限制上传图片的类型和大小
const isJPG = file.type === 'image/jpeg';
const isPNG = file.type === 'image/png';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!');
return false;
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
return false;
}
return true;
}
}
};
</script>
<style>
.avatar-uploader {
display: inline-block;
width: 100px;
height: 100px;
border-radius: 50%;
border: 1px dashed #d9d9d9;
background-color: #f2f2f2;
overflow: hidden;
text-align: center;
}
.avatar {
width: 100%;
height: 100%;
object-fit: cover;
}
.avatar-uploader-icon {
font-size: 32px;
color: #8c939d;
line-height: 100px;
}
</style>
```
在这个示例中,el-upload 组件的 action 属性指向上传头像的 API 接口。在 handleSuccess 方法中,将服务器返回的头像地址存储在 imageUrl 中,然后在模板中使用 v-if 和 v-else 来展示上传的头像或加号图标。beforeAvatarUpload 方法用于限制上传图片的类型和大小。
阅读全文