如何修改WordPress文件上传代码,实现重复文件名末尾加数字
WordPress上传同名文件自动添加数字后缀的修改方案
嘿,我来帮你搞定这个需求!核心思路是先检查目标路径里是否存在同名文件,循环生成唯一的文件名,直到找到一个未被占用的。下面是修改后的完整代码,关键部分都加了注释:
$uploaddir = wp_upload_dir(); $file = $_FILES['panpdf']; // 拆分原始文件名与扩展名,避免给扩展名添加数字 $file_info = pathinfo($file['name']); $original_name = $file_info['filename']; $extension = !empty($file_info['extension']) ? '.' . $file_info['extension'] : ''; $counter = 0; $uploadfile = ''; // 循环生成可用文件名:先尝试原文件名,存在则依次添加-1、-2... do { if ($counter === 0) { $current_filename = $original_name . $extension; } else { $current_filename = $original_name . '-' . $counter . $extension; } $uploadfile = $uploaddir['path'] . '/' . $current_filename; $counter++; } while (file_exists($uploadfile)); // 执行文件上传操作 move_uploaded_file($file['tmp_name'], $uploadfile); $filename = basename($uploadfile); $wp_filetype = wp_check_filetype(basename($filename), null); $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', $filename), // 自动提取不含扩展名的文件名(带数字后缀也能正常处理) 'post_content' => '', 'post_status' => 'inherit', 'menu_order' => $_i + 1000 ); // 你原有的$update_img相关逻辑保持不变即可
关键逻辑解析:
- 拆分文件名与扩展名:使用
pathinfo()函数分离纯文件名和扩展名,确保数字后缀只添加在文件名部分,不会出现file.jpg1这类错误格式 - 循环检查文件存在性:通过
do-while循环先生成文件名再检查是否存在,保证最终得到的$uploadfile路径一定是唯一的 - 后缀递增规则:首次上传使用原始文件名,后续同名文件依次添加
-1、-2……,规则直观易懂,用户能清晰识别重复文件的副本
这样修改后,就能完美实现“同名文件自动添加数字后缀”的需求,再也不用担心上传时覆盖原有文件啦~
内容的提问来源于stack exchange,提问作者Avinash Gupta
相关产品推荐
相关产品推荐

