laoyang
872baf4153
修复:图标存储未跟随后台配置,本地模式下图标显示不出来
用户指出图标应当与附件同一套逻辑:管理员在后台配 local 就存本机、
配 oss 就存 OSS,前台都一样走 media.php 代理。
原实现把图标键硬编码成 icons/…(不带存储前缀),导致:
- fb_attach_is_local() 恒为 false
- 本机模式下文件确实写进了 uploads/icons/,
但 media.php 把它当 OSS 对象去读 → 503,图标完全显示不出来
修法:图标键与附件完全同规则,只是路径里多一段 icons/
local 模式 → local/icons/YYYY/MM/<hex>.<ext> 落 uploads/icons/
oss 模式 → <oss.prefix>/icons/YYYY/MM/<hex>.<ext> 落私有桶
前台地址两种模式一致(media.php?k=…),换存储方式旧图标不会失效。
同时:
- fb_icon_is_key/ok 改为同时识别两种前缀
- fb_icon_allowed_ext 移到 attach.php(media.php 与校验都会用,
不能依赖 admin_taxonomy.php 被加载)
- 写入时加断言:键前缀必须与当前存储模式一致,脱钩就报错,
不再静默存到错误位置
验证(线上真实环境,两种模式各跑一遍):
- local:键带 local/icons/ 前缀、写入 uploads/icons/ 成功、
media.php 读回 200 image/png 501B、PNG 魔数正确、删除后 404
- oss:键带 fb/icons/ 前缀、is_local=false、URL 拼接正确
- 旧 bug 形态(icons/… 无前缀)现在被明确拒绝 400,不再误判成 OSS
- 测试后配置已复原为 oss,临时文件与诊断入口全部清理
2026-11-03 08:19:17 +08:00
..
2026-11-03 08:19:17 +08:00
2026-11-03 08:19:17 +08:00
2026-11-03 08:19:17 +08:00
2026-09-28 20:34:37 +08:00
2026-11-03 08:13:21 +08:00
2026-11-03 08:00:50 +08:00
2026-11-03 08:13:21 +08:00
2026-11-03 07:21:04 +08:00
2026-11-03 08:13:21 +08:00