PHP图片上传重命名及版本控制场景下保留旧文件正确扩展名问题咨询
代码修改方案
你只需要替换原有版本重命名的核心逻辑即可,具体修改如下:
第一步:替换核心代码
找到原有代码中的这一段:
if (IsEnabled($EnableUploadVersions, 0)) @rename($filepath, "$filepath,$Now");
替换为以下内容:
if (IsEnabled($EnableUploadVersions, 0)) { $path_info = pathinfo($filepath); // 处理有扩展名的文件 if (isset($path_info['extension'])) { $new_backup_path = $path_info['dirname'] . '/' . $path_info['filename'] . ',' . $Now . '.' . $path_info['extension']; } else { // 兼容无扩展名的文件 $new_backup_path = $filepath . ',' . $Now; } @rename($filepath, $new_backup_path); }
实现逻辑说明
- 调用PHP内置的
pathinfo()函数拆分原文件的完整路径,自动分离出目录、主文件名、扩展名三个部分 - 备份文件命名规则调整为
[主文件名],[时间戳].[扩展名],例如原文件是photo.jpg,备份后会变成photo,1699999999.jpg,扩展名保留在末尾可被图库脚本正常识别 - 额外兼容了没有扩展名的文件,不会出现多余的
.后缀
内容的提问来源于stack exchange,提问作者aikukuru
相关产品推荐
相关产品推荐

