怎么用element-ui写上传图片,要求:只能上传一张,多次上传会覆盖前一张,如果上传成功上传组件消失,显示上传的图片
时间: 2023-07-15 09:14:43 浏览: 366
你可以使用 Element UI 的 Upload 组件来实现上传图片的功能,具体步骤如下:
1. 在页面中引入 Element UI 的 Upload 组件:
```html
<el-upload
class="upload-demo"
action="/upload"
:before-upload="beforeUpload"
:on-success="handleSuccess"
:show-file-list="false">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传一张图片</div>
</el-upload>
```
2. 在 Vue 实例中定义 beforeUpload 和 handleSuccess 方法:
```javascript
export default {
methods: {
beforeUpload(file) {
// 判断上传的文件类型是否为图片
const isJPG = file.type === 'image/jpeg'
const isPNG = file.type === 'image/png'
if (!isJPG && !isPNG) {
this.$message.error('上传图片只能是 JPG/PNG 格式!')
return false
}
// 判断上传的图片是否只有一张
const isOnePic = this.files.length === 0
if (!isOnePic) {
this.$message.warning('只能上传一张图片!')
return false
}
},
handleSuccess(response) {
// 上传成功后,将上传组件替换成上传的图片
this.files.push({
url: response.url,
name: response.name
})
}
},
data() {
return {
files: []
}
}
}
```
在 beforeUpload 方法中,我们判断上传的文件类型是否为图片,并且判断上传的图片是否只有一张。在 handleSuccess 方法中,将上传成功后的图片保存到 data 的 files 数组中。
3. 在页面中展示上传成功后的图片:
```html
<div v-if="files.length > 0">
<img :src="files[0].url" width="200px" height="200px" alt="">
</div>
```
在页面中,我们通过 v-if 判断 files 数组中是否有数据,如果有,则展示上传成功后的图片。
需要注意的是,我们设置了 show-file-list 为 false,这样可以隐藏上传组件下方的文件列表,只展示上传按钮和提示信息。同时,在 beforeUpload 方法中,我们也要判断上传的文件类型和数量,确保上传的文件符合我们的要求。
阅读全文