问题根源分析
一张图片在网页上正常显示,需要经过三个主要步骤:

- 数据正确存储:图片信息(路径、标题等)必须正确地保存在数据库的
dede_addonarticle(文章表) 或dede_archives(文档主表) 等表中。 - 标签正确调用:DedeCMS的模板标签(如
{dede:field name='body'/}或{dede:img})必须能正确读取数据库中的图片路径。 - 路径正确解析:浏览器能通过标签中的路径,正确找到并加载服务器上的图片文件。
绝大多数不显示的问题,都出在第二步和第三步。
解决方案(按优先级和常见程度排序)
请按照以下顺序逐一排查,90%的问题都能在这里解决。
检查图片路径是否为绝对路径(最常见原因)
这是最最常见的原因,DedeCMS在发布文章时,如果图片路径是相对路径(如 /uploads/allimg/2025/10/01/1.jpg),在后台可能正常显示,但在前台模板调用时,由于网站根目录的不同,会导致路径解析失败。
如何修复:

- 登录DedeCMS后台。
- 进入 “系统” -> “系统基本参数” -> “核心设置”。
- 找到 “是否开启远程图片本地化” 选项,将其设置为 “是”,这个设置会自动将文章内容中的图片转为绝对路径,是解决此问题的最佳方法。
- 保存设置后,重新发布一篇新文章,或者使用 “文档关键词维护” 功能,对旧文章进行“远程图片本地化”处理,让旧文章的图片路径也更新为绝对路径。
如果设置后问题依旧,请手动检查数据库: 进入后台的 ” -> “批量维护” -> “数据库内容替换”。
- :填写
src="/uploads/ - :填写
src="https://你的域名.com/uploads/ - 操作栏目:选择所有栏目。
- 点击 “开始执行”。
检查模板标签使用是否正确
不同的图片位置,需要使用不同的标签。
调用文章正文中的图片(最常用)通常存储在 body 字段中,直接使用 {dede:field name='body'/} 即可。确保你的文章内容是使用DedeCMS编辑器(如ckeditor)上传的,而不是直接从Word粘贴或手动输入HTML代码。
调用文章列表缩略图 列表缩略图通常有两种情况:

- 自动提取:在后台“系统基本参数”中设置了“自动提取第一张图为缩略图”,这时,列表页的缩略图标签是
{dede:list}循环内的{dede:field name='litpic'/}。 - 手动上传:在发布文章时手动上传了缩略图,标签同样是
{dede:field name='litpic'/}。
调用自定义字段中的图片
如果你在模型中添加了一个图片类型的自定义字段(myimg),调用方式是:
{dede:field name='myimg'/}
重要提示: 使用这些标签时,确保它们没有被错误地注释掉或修改,不要写成 {dede:field name='body' /} (中间多了一个空格)。
检查服务器和网站目录权限
图片文件本身是否存在,以及Web服务器是否有权限读取它。
检查图片文件是否存在
- 通过FTP工具登录你的服务器。
- 找到图片的路径(
uploads/allimg/2025/10/01/1.jpg)。 - 检查该文件是否真实存在于服务器上,如果文件不存在,说明上传过程出了问题。
检查目录权限
- 确保
uploads目录及其所有子目录(如allimg)的权限设置为 755。 - 确保这些目录内的文件权限设置为 644。
- 错误的权限(如 000)会导致服务器无法读取文件,从而无法显示。
检查图片URL是否被浏览器安全策略阻止
图片路径和文件都正确,但浏览器开发者工具会显示图片加载失败,并提示“CORS policy”或“MIME type”错误。
如何排查:
- 按 F12 打开浏览器开发者工具。
- 切换到 “网络” (Network) 标签页。
- 刷新页面,找到那个加载失败的图片请求。
- 查看请求的 “标头” (Headers) 和 “响应” (Response)。
- 如果看到
(blocked: cors policy):这通常是服务器配置问题,你的域名没有被允许跨域访问该资源,对于DedeCMS,这通常不是问题,因为图片和网站在同一服务器,可以尝试清除浏览器缓存或使用无痕模式访问。 - 如果看到
(failed: net::ERR_CONTENT_LENGTH_MISMATCH)或其他网络错误:可能是服务器配置(如Nginx/Apache)或服务器负载问题。
- 如果看到
检查是否开启了Gzip压缩导致图片损坏
在某些服务器环境下,开启Gzip压缩可能会对图片等二进制文件造成损坏,导致浏览器无法解析。
如何排查: 暂时在后台关闭Gzip压缩(“系统基本参数” -> “性能选项”),然后刷新页面看图片是否正常显示,如果恢复正常,说明是Gzip配置问题,需要联系服务器管理员优化Gzip配置,排除对图片的压缩。
总结与排查清单
当你遇到“Dede调用图片不显示”时,请按以下清单操作:
- 【首要步骤】 进入后台 “系统基本参数” -> “核心设置”,将 “是否开启远程图片本地化” 设为 “是”,并对旧文章执行一次“远程图片本地化”操作。
- 【检查标签】 确认你使用的模板标签(如
{dede:field name='body'/})是正确的,且没有被错误修改。 - 【检查文件】 通过FTP登录服务器,确认图片文件确实存在于
uploads目录下。 - 【检查权限】 确保
uploads目录权限为 755,图片文件权限为 644。 - 【浏览器调试】 按 F12 查看网络请求,根据错误提示进一步排查(如CORS、MIME类型)。
- 【最后手段】 尝试关闭Gzip压缩,看是否是服务器配置问题。
按照这个流程,绝大多数图片不显示的问题都能被顺利解决,如果以上步骤都无法解决问题,可能是网站程序文件损坏,可以尝试覆盖安装DedeCMS程序,或者联系你的服务器/空间提供商寻求技术支持。
