- 修改后台设置:这是最直接、最推荐的方法,可以在不修改代码的情况下完成路径的修改。
- 修改核心配置文件:如果后台设置无法满足需求(你希望所有新上传的附件都存放在一个固定的、不受后台设置影响的目录),则需要修改代码。
下面我将详细介绍这两种方法。

(图片来源网络,侵删)
通过后台系统设置修改(推荐)
这是最简单、最安全的方法,适用于大多数常规需求。
步骤 1:登录后台并进入系统设置
- 使用你的管理员账号登录 Dedecms 后台。
- 在左侧菜单栏中,找到并点击 “系统” -> “系统基本参数”。
步骤 2:修改上传目录相关参数
在“系统基本参数”页面,切换到 “核心设置” 选项卡。
你会看到以下几个与上传路径相关的关键参数,你可以根据需要进行修改:
| 参数名称 | 参数值说明 | 修改建议 |
|---|---|---|
| 附件目录 | 默认值是 uploads,这是所有上传文件(如文章图片、软件、文档等)的根目录。 |
如果你希望所有附件都存放在 data 目录下,可以修改为 data/uploads。 |
| 多媒体目录 | 默认值是 uploads,通常与附件目录相同,用于存放视频、音频等大文件。 |
可以保持与“附件目录”一致,或者单独设置,如 uploads/media。 |
| 附件保存目录 | 默认值是 day,系统会在 附件目录 下按日期创建子目录来存放文件,以避免单个目录文件过多。 |
通常保持 day 即可,这样每天一个文件夹,便于管理,如果你想按月存放,可以修改为 month。 |
| 远程站点附件目录 | 默认值是 uploads,当你开启了“远程附件”功能时,附件会保存在这个目录。 |
通常保持与“附件目录”一致即可。 |
修改示例:

(图片来源网络,侵删)
假设你希望所有附件都存放在 wwwroot/data/files 目录下,并且按日期存放。
- 附件目录:将
uploads修改为data/files。 - 多媒体目录:同样修改为
data/files。 - 附件保存目录:保持
day不变。
修改完成后,务必点击页面底部的 “保存” 按钮。
步骤 3:验证修改
- 清空缓存:保存后,最好在后台的 “系统” -> “一键更新网站” 中,选择“更新缓存”并执行。
- 上传测试:去发布一篇新文章,上传一张图片,检查服务器上是否在
data/files/day/目录(或你设置的目录)下生成了对应的图片文件。
修改核心配置文件(进阶)
如果你发现后台设置修改后无效,或者有更复杂的自定义需求(不同栏目使用不同的上传路径),就需要直接修改代码文件。
修改默认上传目录
这个文件定义了附件上传的默认根目录。

(图片来源网络,侵删)
- 文件路径:
/include/config_base.php - 查找代码:
// $cfg_upload_path = $cfg_basedir.$cfg_medias_dir; // $cfg_media_dir = '/uploads';
- 修改方法:
你可以修改
$cfg_medias_dir的值,如果你想默认上传到data/myuploads目录,可以这样修改:// $cfg_upload_path = $cfg_basedir.$cfg_medias_dir; $cfg_medias_dir = '/data/myuploads'; // 修改为你想要的目录
注意:这里的路径是相对于网站根目录()的,请确保你设置的目录存在并且有正确的写入权限(通常是 755 或 777)。
修改按日期/按目录存放的规则
这个文件决定了文件上传后是存放在 day(按天)、month(按月)还是其他自定义目录。
-
文件路径:
/include/dedecollection.class.php或/include/ upload.class.php(不同版本可能略有不同,upload.class.php更常见) -
查找代码: 在
upload.class.php文件中,寻找类似GetFilePath()的函数,你会看到类似下面的逻辑:function GetFilePath($activepath = '') { $year = MyDate('Y', time()); $month = MyDate('m', time()); $day = MyDate('d', time()); // 这里的 $mdir 变量决定了子目录的规则 $mdir = $cfg_medias_dir.'/'.$year.'/'.$month.'/'.$day; // 默认是按年/月/日 // 如果你想修改为按年/月,可以这样改: // $mdir = $cfg_medias_dir.'/'.$year.'/'.$month; // 或者如果你想修改为固定的 'all' 目录: // $mdir = $cfg_medias_dir.'/all'; // ... 其他代码 } -
修改方法: 修改
$mdir的赋值逻辑,即可改变文件的存放规则,取消按天分类,统一存放在uploads/all目录下:function GetFilePath($activepath = '') { // ... // 修改为固定的 'all' 目录 $mdir = $cfg_medias_dir . '/all'; // ... }
修改缩略图保存路径
缩略图的保存路径通常和原图路径一致,但如果你想单独设置,可以修改以下文件:
- 文件路径:
/include/dedecollection.class.php或/include/ upload.class.php - 查找代码:寻找处理缩略图的函数,如
MakeThumb(),缩略图的路径通常也是通过GetFilePath()函数生成的,所以修改了上述规则,缩略图路径也会随之改变,如果需要独立配置,需要在该函数中单独处理。
重要注意事项
- 文件权限:无论你修改哪个目录,必须确保该目录在服务器上存在,Web 服务器(如 Apache、Nginx)对该目录有写入权限,通常设置目录权限为
755,文件权限为644,如果需要,可以临时设置为777进行测试,但为了安全,测试完毕后应改回755。 - 备份:在修改任何核心文件(如
config_base.php)之前,务必备份原文件,以防修改出错导致网站无法正常运行。 - 缓存问题:修改后台设置后,记得清空缓存,直接修改代码文件后,也需要清空缓存才能生效。
- 现有数据:这些修改只对之后新上传的文件生效,不会改变已经存在的文件路径,如果你需要移动历史文件,需要手动操作。
| 需求场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 常规需求,改变所有附件的根目录 | 后台设置 | 简单、安全、无需代码知识 | 功能相对固定 |
| 需要更复杂的目录规则(如按年/月) | 方法一+方法二结合 | 后台设置根目录,代码规则 | 需要修改代码 |
| 不同栏目不同上传路径 | 修改代码 | 灵活性极高 | 复杂,需要编程知识,容易出错 |
对于绝大多数用户来说,方法一已经足够解决问题,只有在遇到特殊情况时,才需要考虑方法二。
