Img标签的src地址自动拼接本地域名(localhost:8080)导致图片不显示问题

摘要:做Vue+element ui项目的时候,发现使用element ui的upload上传图片时,不显示的问题。我项目的图片是上传到七牛云,长传成功后返回存储在七牛云中的地址。后面发现是因为返回的地址是外部地址,需要完整的URL,不然会被视为本地的绝对路径.解决方法是在链接前面加上 http:// ,可直接选择在后端处理拼接,减小前端修改代码次数。

1.问题描述

前端代码:

javascript 复制代码
<el-upload
    class="avatar-uploader"
    name="img"
    :action="uploadURL"
    :headers="MyHeader"
    :show-file-list="false"
    :on-success="handleAvatarSuccess"
    :before-upload="beforeAvatarUpload">
    <img   v-if="userInfoObj.avatar" :src="userInfoObj.avatar"  :onerror="$store.state.errorImg" class="avatar">
    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    <div slot="tip" class="el-upload__tip">点击上传头像,只能上传jpg/png文件,且不超过1mb</div>
</el-upload>

前端请求示例:

只上传一张图片。

后端返回结果:

将data中的链接直接用浏览器访问是可以查看到图片。但项目页面图片不显示,如下图:

对页面元素进行检查,发现好像地址没问题:

可为啥就是访问不了呢,接下来直接复制没显示图片的地址,看它是否有问题,选中未显示图片,鼠标右键复制图片地址。

图片地址:

注意看,发现图片真正请求时竟然加上了本地域名localhost, 难怪访问不到图片,图片url被错误拼接了。

2.解决方法

因为返回的地址是外部地址,需要完整的URL,不然会被视为本地的绝对路径.

解决方法是在链接前面加上 http:// ,可直接选择在后端处理拼接,减小前端修改代码次数。

方法1:前端访问时,img src属性加上http//

方法2:后端地址拼接上http://后返回给前端,img src直接使用。

相关推荐
不能只会打代码12 分钟前
六十天前端强化训练之第一天HTML5语义化标签深度解析与博客搭建实战
前端·html·html5
OpenTiny社区29 分钟前
Node.js技术原理分析系列——Node.js的perf_hooks模块作用和用法
前端·node.js
菲力蒲LY33 分钟前
输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
java·前端·mybatis
飞天大河豚2 小时前
2025前端框架最新组件解析与实战技巧:Vue与React的革新之路
vue.js·react.js·前端框架
MickeyCV2 小时前
Nginx学习笔记:常用命令&端口占用报错解决&Nginx核心配置文件解读
前端·nginx
祈澈菇凉2 小时前
webpack和grunt以及gulp有什么不同?
前端·webpack·gulp
十步杀一人_千里不留行2 小时前
React Native 下拉选择组件首次点击失效问题的深入分析与解决
javascript·react native·react.js
zy0101012 小时前
HTML列表,表格和表单
前端·html
初辰ge2 小时前
【p-camera-h5】 一款开箱即用的H5相机插件,支持拍照、录像、动态水印与样式高度定制化。
前端·相机
HugeYLH2 小时前
解决npm问题:错误的代理设置
前端·npm·node.js