You need to enable JavaScript to run this app. multer上传的图片存于public目录但ejs页面无法渲染该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

multer上传的图片存于public目录但ejs页面无法渲染该如何解决

你的问题出在两处路径配置错误:

  1. 静态资源目录的拼接逻辑错误
    你写的app.use(express.static(__dirname+"./public/"))存在路径拼接问题,__dirname本身不带结尾路径分隔符,和./public/直接拼接会生成类似/你的项目路径./public/的非法路径,导致express无法正确映射public目录下的静态资源。
  2. 前端ejs模板的图片引用路径使用了相对路径
    ./uploads/<%=item.img%>是相对当前页面路由的路径,如果你在多级路由下访问页面,会出现路径拼接错误,无法正确指向静态资源根目录下的uploads文件夹。

修复方案

第一步:修改静态资源配置代码

将原来的静态资源注册代码替换为:

app.use(express.static(path.join(__dirname, 'public')));

用path.join处理路径拼接,可以自动适配不同操作系统的路径分隔符,生成正确的public目录绝对路径。

第二步:修改ejs模板的图片引用路径

将img标签的src属性改为绝对路径开头:

<img src="/uploads/<%=item.img%>" alt="image">

开头的/表示直接从站点根目录寻址,不管当前页面路由是什么层级,都可以正确指向public目录下的uploads文件夹对应文件。

修改完成后重启服务即可正常加载图片。

内容的提问来源于stack exchange,提问作者Rasheed 789456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:45:04