新闻中心
解决EJS动态图片路径在Express应用中无法显示的问题

1. 问题剖析:EJS动态路径与Express静态文件服务
在Express应用中使用EJS模板引擎动态展示图片时,开发者常遇到一个令人困惑的问题:当图片路径硬编码在HTML中时能够正常显示,但当使用EJS变量动态填充src属性时,图片却无法加载。
现象复现: 假设您的服务器端代码通过Express的express.static中间件配置了静态文件服务,例如:
// server.js 或 app.js
const express = require('express');
const path = require('path');
const app = express();
// 假设您的图片存储在项目根目录下的 'uploads/images' 文件夹中
// 并希望通过 '/images/your-image.jpg' 这样的URL访问
app.use('/images', express.static(path.join(__dirname, 'uploads', 'images')));
// 其他路由...
app.get('/create', (req, res) => {
const nameOfImg = '2025-07-16T13-40-30.352Z104879.jpg'; // 假设这是从数据库获取的图片名称
res.render('createPage', { name: nameOfImg });
});
app.listen(3000, () => console.log('Server running on port 3000'));在EJS模板 (createPage.ejs) 中:
-
硬编码路径(工作正常):
@@##@@
-
EJS动态路径(无法显示):
@@##@@">
尽管变量本身在页面上能正确渲染出图片名称(例如 2025-07-16T13-40-30.352Z104879.jpg),但图片却加载失败,浏览器开发者工具的网络请求中会显示404错误。
根本原因分析:
问题的核
心在于浏览器如何解析HTML中
标签的src属性值,以及express.static中间件如何映射文件路径到URL。
express.static的工作原理:app.use('/images', express.static(path.join(__dirname, 'uploads', 'images'))); 这行代码告诉Express:将 uploads/images 目录下的所有文件,通过 /images 这个URL前缀对外提供服务。例如,uploads/images/my-photo.jpg 将可以通过 http://localhost:3000/images/my-photo.jpg 访问。
青泥AI
青泥学术AI写作辅助平台
360
查看详情
-
浏览器对相对路径的解析: 当浏览器解析HTML中的src属性时,如果路径不是以 / 开头的(即相对路径),它会相对于当前页面的URL来解析。
- 假设用户访问的页面URL是 http://localhost:3000/create。
- 当浏览器遇到
时,它会将 images/ 视为相对于 /create 的路径。
- 因此,浏览器会尝试请求 http://localhost:3000/create/images/2025-07-16T13-40-30.352Z104879.jpg。
- 然而,根据我们的 express.static 配置,图片实际上是通过 http://localhost:3000/images/2025-07-16T13-40-30.352Z104879.jpg 访问的。
- express.static 并没有配置在 /create 路径下提供静态文件,所以对 /create/images/... 的请求自然会返回404错误。
硬编码的 之所以能工作,很可能是因为在测试时页面URL不是 /create,或者存在其他隐式配置导致其被正确解析。但在 /create 页面下,它也会遇到同样的问题。
2. 解决方案一:优化HTML中的图片路径 (推荐)
最直接且推荐的解决方案是确保
以上就是解决EJS动态图片路径在Express应用中无法显示的问题的详细内容,更多请关注其它相关文章!
# 是因为
# 垂直电商类视频网站推广
# 咸宁网站建设兼职招聘群
# sem相比seo有时
# 安亭营销推广哪里靠谱
# 兰蔻化妆品营销推广计划
# 安徽常规网站建设预算
# 商业营销推广补充协议
# 眼泪素材网站建设管理
# 孝感网站建设提案制作
# 临沂慧抖销seo优化
# 相关文章
# 但在
# 两种
# 也会
# javascript
# 这是
# 相对于
# 加载
# 您的
# 置顶
# 路由
# 工具
# app
# 浏览器
# 编码
# js
# html
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
UC浏览器网页版登录入口官网 电脑版网址入口
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
163邮箱注册官网 免费申请163个人邮箱
随机参数递归函数的基准调用次数与时间复杂度探究
拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧
美团外卖商家服务中心入口 美团商家版官网入口
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
126邮箱手机版登录官网2026_126手机邮箱免费入口最新
Lar*el 8 多关键词数据库搜索优化实践
Eclipse怎么运行工程_Eclipse工程运行配置说明
J*a递归快速排序中静态变量导致数据累积问题的解决方案
J*aScript生成器_j*ascript异步迭代
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
小红书网页版入口链接分享 小红书官网直接进
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
顺丰国际快递查询 国际件官方查询入口
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】
抖音网页版怎么|直播|_抖音网页版开播操作指南
mysql备份恢复性能优化_mysql备份恢复性能优化方法
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
汽水音乐在线版入口_汽水音乐网页播放手册
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践
Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注
J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口
excel怎么制作工资条 excel快速生成工资条的方法
TikTok网页版直接登录 TikTok网页端官方平台入口
css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染
精准捕获:如何在页面中监听除特定元素外的所有点击事件
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
必由学登录入口 必由学官方网站在线访问链接
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
AO3中文官网链接_AO3网页版稳定镜像站
age动漫网站入口 age动漫官网直接访问入口
钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧
Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧


2025-10-09
浏览次数:次
返回列表