解决element-plus中el-avatar以及el-image组件使用本地路径的图片无法显示的问题

        项目中有个上传用户头像的功能,但是不是必填项,不上传的话显示默认头像,默认头像配置在asset目录下面。界面是使用了el-avatar组件,发现使用本地图片路径无法显示,但是使用原生img标签却能显示。

 如何解决?

使用引入的方法

 

 el-image这个组件也是一样的操作,有用的话点个赞啦!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用 Vue3+Element-plus 编写图片上传的代码及注释: ```html <template> <div> <el-upload class="avatar-uploader" action="/api/upload" :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> import { ref } from 'vue' export default { name: 'AvatarUpload', setup() { const imageUrl = ref('') // 上传前的校验 const 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 } // 上传成功的回调 const handleSuccess = (res) => { if (res.code === '200') { imageUrl.value = res.data.url this.$message.success('上传成功!') } else { this.$message.error('上传失败,请重试!') } } return { imageUrl, beforeAvatarUpload, handleSuccess } } } </script> <style scoped> .avatar-uploader { display: flex; justify-content: center; align-items: center; width: 120px; height: 120px; border-radius: 50%; border: 1px dashed #ccc; background-color: #f9fafc; cursor: pointer; } .avatar { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; } </style> ``` 注释: - `el-upload` 是 Element-plus 的上传组件,`action` 属性指定上传接口地址,`show-file-list` 属性指定是否显示上传文件列表,`on-success` 属性指定上传成功的回调函数,`before-upload` 属性指定上传前的校验函数; - `img` 标签用于展示上传成功后的图片,属性 `v-if="imageUrl"` 判断 `imageUrl` 是否存在,如果存在则显示图片,否则显示上传按钮; - `i` 标签用于显示上传按钮,属性 `v-else` 表示如果 `imageUrl` 不存在,则显示按钮; - `ref` 是 Vue3 用于创建响应式数据的方法; - `beforeAvatarUpload` 方法用于上传前的校验,判断文件类型和大小是否符合要求; - `handleSuccess` 方法用于上传成功的回调,在回调将上传成功的图片地址赋值给 `imageUrl`,并提示上传成功; - `setup` 函数是 Vue3 的新特性,用于组件的选项设置,返回一个对象,包含组件需要用到的数据和方法; - `return` 的数据和方法,会被 Vue3 自动注入到组件的模板使用; - `style` 标签的 `scoped` 属性表示样式仅作用于当前组件的元素,不会影响到其他组件的样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值