element-ui 上传图片 和显示
时间: 2024-12-31 11:20:34 浏览: 10
### 使用 Element-UI 实现图片上传与预览
为了在项目中实现图片上传和预览功能,可以利用 `Element-UI` 提供的 `<el-upload>` 组件。此组件支持多种配置选项来满足不同的需求。
#### 创建图片上传表单
创建一个简单的 HTML 表单用于文件选择:
```html
<template>
<div class="upload-demo">
<el-upload
action="https://jsonplaceholder.typicode.com/posts/"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:file-list="fileList"
:before-upload="beforeAvatarUpload"
:on-success="handleSuccess"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt />
</el-dialog>
</div>
</template>
<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;
},
handleSuccess(response, file, fileList){
// 处理成功后的逻辑
console.log(response,file,fileList)
}
}
};
</script>
```
上述代码展示了如何设置一个带有预览对话框的图片上传控件[^1]。通过定义 `action` 属性指定服务器端接收地址;使用钩子函数如 `before-avatar-upload`, `handle-picture-card-preview` 和 `handle-remove` 来处理不同阶段的操作事件。
对于更复杂的场景,比如解决表格内图片展示时可能出现的遮挡问题,则可以通过自定义指令的方式调整样式或布局[^2]。
阅读全文