You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:41:36