elementui 图片上传单张
时间: 2024-12-30 13:27:32 浏览: 17
### ElementUI 实现单张图片上传
为了实现在ElementUI中仅允许上传一张图片的功能,可以通过配置`upload`组件的相关属性来达成这一目标。通过设置`limit=1`以及调整文件列表显示样式(`list-type`)为`picture-card`,可以创建一个直观的界面用于处理单一图像文件的上传操作[^3]。
下面是一个具体的实现案例:
#### HTML模板部分
```html
<template>
<div class="image-uploader">
<!-- 使用element-ui的el-upload组件 -->
<el-upload
action="/api/upload"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:before-upload="beforeAvatarUpload"
:file-list="fileList"
:limit="1"
:on-exceed="handleExceed"
:class="{ disabled: fileList.length === 1 }"
>
<i class="el-icon-plus"></i>
</el-upload>
<!-- 对话框用来预览大图 -->
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt />
</el-dialog>
</div>
</template>
```
#### JavaScript逻辑部分
```javascript
<script>
export default {
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
fileList: []
};
},
methods: {
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
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;
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
}
}
};
</script>
```
#### CSS样式控制
```css
<style scoped>
/* 当已经有图片存在时隐藏上传按钮 */
.disabled ::v-deep .el-upload--picture-card {
display: none !important;
}
</style>
```
此代码片段展示了如何利用ElementUI框架下的`el-upload`组件完成单张图片的选择、上传及其预览功能,并且当已有图片被成功上传后会自动隐藏上传区域以防止额外文件加入。
阅读全文