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

PHP文件上传时如何将文件名重命名为表单字段拼接指定固定后缀

PHP文件上传自定义重命名实现方案

实现说明

你的需求只需要调整原有PHP代码的目标文件名生成规则,同时补充表单字段的合法性校验即可,修改后的完整可运行代码如下:

<?php
// 先获取并校验first_name字段
$first_name = trim($_POST['first_name'] ?? '');
$uploadOk = 1;
if (empty($first_name)) {
    echo "对不起,请填写first_name字段后再提交";
    $uploadOk = 0;
}
// 过滤first_name中的非法文件名字符,避免生成无效文件名
$first_name = preg_replace('/[\/\\\:\*\?\"\<\>\|]/', '', $first_name);

$target_dir = "uploads/";
// 获取原文件扩展名
$origin_filename = basename($_FILES["fileToUpload"]["name"]);
$imageFileType = strtolower(pathinfo($origin_filename, PATHINFO_EXTENSION));
// 按规则生成新文件名
$new_filename = $first_name . '_invoice.' . $imageFileType;
$target_file = $target_dir . $new_filename;

// 检查文件是否已存在
if (file_exists($target_file)) {
  echo "对不起,文件已存在";
  $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "对不起,您的文件大小超出限制";
  $uploadOk = 0;
}

// 校验允许的文件格式
if($imageFileType != "jpg" && $imageFileType != "pdf"  && $imageFileType != "txt"  && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
  echo "对不起,仅允许上传PDF、TXT、JPG、JPEG、PNG、GIF格式的文件";
  $uploadOk = 0;
}

// 校验不通过时返回错误
if ($uploadOk == 0) {
  echo "抱歉,您的文件上传失败";
// 所有校验通过后执行上传
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "文件 ". htmlspecialchars($origin_filename). " 已上传,新文件名为:" . htmlspecialchars($new_filename);
  } else {
    echo "对不起,文件上传过程中出现错误";
  }
}
?>

关键改动说明

  • 新增了first_name字段非空校验,避免用户未填写该字段直接提交生成无效文件名
  • 新增了first_name特殊字符过滤逻辑,移除文件名不允许的特殊字符,避免文件写入失败
  • 替换了原有目标文件名生成规则,按照需求拼接[first_name取值]_invoice.原扩展名作为新文件名
  • 同步优化了上传成功后的提示,会显示新生成的文件名,方便核对

注意:请提前在upload.php同级目录创建uploads文件夹,并给该文件夹配置读写权限,否则会出现上传失败的问题。

内容的提问来源于stack exchange,提问作者Ashman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:18:01