1. 功能概述
PbootCMS 默认会对上传的文件(如图片、文档、压缩包等)进行重命名后保存,但某些场景下(如文档或压缩包),用户可能希望保留文件的原始名称。本文将介绍如何通过二次开发实现非图片类文件使用原名称保存的功能。
2. 修改步骤
步骤一:获取文件真实名称
-
打开文件
- 使用 FTP 或服务器管理工具,找到并打开以下文件:
/core/function/file.php
- 使用 FTP 或服务器管理工具,找到并打开以下文件:
-
定位代码
- 在文件中搜索以下代码(通常用于获取文件扩展名):
$file_ext = strtolower(end($file)); // 获取扩展
- 在文件中搜索以下代码(通常用于获取文件扩展名):
-
新增代码
- 在上述代码的下一行增加以下内容,用于获取文件的真实名称:
$file_truename = $file[0]; // 获取文件真实名称
- 在上述代码的下一行增加以下内容,用于获取文件的真实名称:
步骤二:修改文件保存路径逻辑
-
定位代码
- 继续在
file.php文件中搜索以下代码(用于生成文件保存路径):$file_path = $save_path . '/' . $file_type . '/' . date('Ymd') . '/' . time() . mt_rand(100000, 999999) . '.' . $file_ext;
- 继续在
-
替换代码
- 将上述代码替换为以下内容,区分图片和其他文件的命名规则:
// 如果是图片随机重命名,其他的按原文件名称 if ($file_type == 'image') {$file_path = $save_path . '/' . $file_type . '/' . date('Ymd') . '/' . time() . mt_rand(100000, 999999) . '.' . $file_ext; } else {$file_path = $save_path . '/' . $file_type . '/' . date('Ymd') . '/' . $file_truename . '.' . $file_ext; }
- 将上述代码替换为以下内容,区分图片和其他文件的命名规则:
3. 注意事项
-
文件冲突处理
- 如果多个文件具有相同的名称,可能会导致覆盖问题。建议在实际应用中增加文件名唯一性校验逻辑,例如在文件名后追加时间戳或随机字符串。
-
安全性考虑
- 原文件名可能包含特殊字符或恶意代码,建议对文件名进行过滤和转义,确保系统安全。例如:
$file_truename = preg_replace('/[^a-zA-Z0-9\.\-\_]/', '', $file_truename);
- 原文件名可能包含特殊字符或恶意代码,建议对文件名进行过滤和转义,确保系统安全。例如:
-
备份文件
- 修改核心文件前,建议备份原始文件,以便出现问题时快速恢复。
-
测试验证
- 修改完成后,上传不同类型文件(如图片、文档、压缩包等),检查是否符合预期效果。
4. 总结
通过以上修改,可以实现 PbootCMS 非图片类文件使用原名称保存的功能。主要涉及以下步骤:
- 获取文件的真实名称。
- 修改文件保存路径逻辑,区分图片和其他文件的命名规则。
合理配置这些参数后,即可满足用户对文件命名的个性化需求,同时确保系统的稳定性和安全性。
