Symfony中无法显示PostgreSQL数据库存储的上传图片求助
问题排查与解决步骤
1. 修正Asset路径
你的Twig模板里的asset路径存在错误,Symfony的asset()函数默认以项目根目录下的public文件夹为基准,不需要额外添加./public前缀。修改模板中的img标签:
<img src="{{ asset('uploads/draws/' ~ draw.post) }}" />
2. 验证文件存在性与路径匹配
- 确认图片文件确实存在于项目的
public/uploads/draws/目录下 - 核对数据库中
draw.post字段存储的文件名(包括大小写、后缀)是否与实际文件名完全一致,避免因拼写错误导致路径无效
3. 检查文件权限
确保Web服务器(如Nginx、Apache)对public/uploads/draws/目录及其下文件有读取权限。在Linux系统中可执行以下命令调整权限:
chmod -R 755 public/uploads/draws/ chown -R www-data:www-data public/uploads/draws/
4. 优化控制器代码(更规范写法)
控制器无需直接注入Environment,使用Symfony自带的render()方法即可:
#[Route('/publication', name: 'publication')] public function temp(DrawRepository $drawRepository) { $draws = $drawRepository->findAll(); return $this->render('draw/show.html.twig', [ 'draws' => $draws ]); }
5. 清除Symfony缓存
如果修改后问题依旧,清除缓存确保模板和路由生效:
# 开发环境 php bin/console cache:clear # 生产环境 php bin/console cache:clear --env=prod
内容的提问来源于stack exchange,提问作者Major Sigma
相关产品推荐
相关产品推荐

