图片上传路径统一管理实施总结
图片上传路径统一管理实施总结
一、实施完成情况
✅ 已完成的工作
- 创建统一配置函数
- ✅ 在 Banyan/Common/common.php 中添加了 get_upload_path() 函数
- ✅ 在 Banyan/Common/common.php 中添加了 get_upload_url() 函数
- ✅ 修改了 config_img() 函数,使用后台配置
- ✅ 修改了 config_weixin_img() 函数,使用后台配置
- 移除硬编码
- ✅ 修改了 index.php,注释掉硬编码的 IMGG_PATH
- ✅ 移除了所有 CommonAction 中的 define('IMG_PATH', ...) 定义
- 修改上传相关文件
- ✅ Banyan/Lib/Action/App/UploadAction.class.php - 所有上传方法已修改
- ✅ Banyan/Lib/Action/Backstage/PublicAction.class.php - 已修改
- ✅ Banyan/Lib/Action/Distributors/PublicAction.class.php - 已修改
- ✅ Banyan/Lib/Action/Wap/PublicAction.class.php - 已修改
- ✅ Banyan/Lib/Action/Substation/PublicAction.class.php - 已修改
- 修改CommonAction文件
- ✅ Banyan/Lib/Action/Wap/CommonAction.class.php - 已移除 define('IMG_PATH', ...)
- ✅ Banyan/Lib/Action/User/CommonAction.class.php - 已移除 define('IMG_PATH', ...)
- ✅ Banyan/Lib/Action/App/CommonAction.class.php - 已移除 define('IMG_PATH', ...)
二、核心函数说明
2.1 get_upload_path()
功能:获取图片上传物理路径
返回值:字符串,如 E:\wwwroot\zh\shiping
数据源:从数据库 by_setting 表的 imgtureurl 字段读取
兼容性:如果数据库未配置,使用已定义的 IMGG_PATH 或默认路径
2.2 get_upload_url()
功能:获取图片访问URL前缀
返回值:字符串,如 https://shiping.banyanfw.com
数据源:从数据库 by_setting 表的 imgurl 字段读取
兼容性:如果数据库未配置,使用当前请求的域名
三、配置说明
3.1 后台配置位置
localhost/backstage/setting/site.html
3.2 配置字段
- 图片域名 (
imgurl):https://shiping.banyanfw.com - 图片实际路径 (
imgtureurl):E:\wwwroot\zh\shiping
3.3 路径映射
- 上传路径:
E:\wwwroot\zh\shiping\attachs\2026\01\24\xxx.jpg - 访问URL:
https://shiping.banyanfw.com/attachs/2026/01/24/xxx.jpg
四、修改文件清单
4.1 核心文件
index.php- 移除硬编码Banyan/Common/common.php- 添加统一函数,修改config_img()和config_weixin_img()
4.2 上传相关文件
Banyan/Lib/Action/App/UploadAction.class.php- 所有上传方法Banyan/Lib/Action/Backstage/PublicAction.class.php-uploadify()和editor()Banyan/Lib/Action/Distributors/PublicAction.class.php-upload()Banyan/Lib/Action/Wap/PublicAction.class.php-upload()Banyan/Lib/Action/Substation/PublicAction.class.php-uploadify()和editor()
4.3 CommonAction文件
Banyan/Lib/Action/Wap/CommonAction.class.phpBanyan/Lib/Action/User/CommonAction.class.phpBanyan/Lib/Action/App/CommonAction.class.php
五、使用方式
5.1 上传文件
$upload_path = get_upload_path();
$dir = $upload_path . '/attachs/' . $name . '/';
5.2 返回URL
$picurl = get_upload_url() . '/attachs/' . $name . '/' . $filename;
5.3 显示图片
$img_url = config_img($img_path);
六、注意事项
- 路径格式:
get_upload_path()会自动处理 Windows/Linux 路径分隔符 - URL格式:
get_upload_url()会自动去除末尾斜杠 - 兼容性:如果数据库未配置,会使用默认值,确保系统正常运行
- 缓存:两个函数都使用了静态变量缓存,避免重复查询数据库
七、测试建议
- 测试上传功能:
- 测试各种文件上传(图片、视频、文档等)
- 验证文件是否保存到正确路径
- 验证返回的URL是否正确
- 测试图片显示:
- 测试旧图片是否正常显示
- 测试新上传的图片是否正常显示
- 验证 config_img() 函数是否正常工作
- 测试后台配置:
- 修改后台配置,验证是否生效
- 测试路径不存在时的处理
- 测试URL格式是否正确
八、后续工作
- ✅ 所有
IMGG_PATH已替换为get_upload_path() - ✅ 所有
IMG_PATH已替换为get_upload_url()或使用config_img() - ⚠️ 需要检查是否有其他文件直接使用了硬编码路径(如
E:\wwwroot\zh\shiping)
实施日期:2026-01-24
实施状态:✅ 已完成
