PHP 文件上传更改文件名保留扩展名

PHP file upload change file name keep extension

我想更改上传文件的名称,例如,如果我选择上传文件 "image.png",我想在上传时将其重命名为 "face.png"。

我有一个 php 图片上传表单,但是它保留文件的当前名称并上传它,我现在想要一个变量名称 $custom_name 我可以编辑内容这是文件的新名称。

PHP 上传表格:

if(isset($_FILES['image'])){
  $errors= array();

  $custom_name = ""; // THIS IS WHERE I WANT TO INSERT NEW NAME 

  $file_name = $_FILES['image']['name'];
  $file_size =$_FILES['image']['size'];
  $file_tmp =$_FILES['image']['tmp_name'];
  $file_type=$_FILES['image']['type'];
  $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));

  $expensions= array("png");

  if(in_array($file_ext,$expensions)=== false){
    $errors[]='Only PNG files';
    echo "Only PNG files";
  }

  if($file_size > 2097152){
     $errors[]='Larger than 2MB';
    echo "Larger than 2MB";
  }

  if(empty($errors)==true){
     move_uploaded_file($file_tmp,"images/quads/".$file_name);
     echo "Success";
  }else{
  }
}

我已经尝试过串联,但就是不知道将 $custom_name 变量放在哪里。

非常感谢您的帮助

Since you said you already tried (and it looks like you really have), here is an explanation:

当您在 PHP 中上传文件时,原始文件名变为 $_FILES['image']['name']。在您的代码中,您将此值设置为变量 $file_name.
您已经在 $file_ext 中有了该文件的扩展名,因此您可以使用它。

如果你在$custom_name变量中有一个特定的字符串,你可以使用:

$file_name = $custom_name . $file_ext;

move_uploaded_file 的第二个参数是您要创建的新文件的路径(在您的示例中是 "images/quads/".$file_name)。如果变量 $file_name 将包含 $custom_name$file_ext - 你会得到你想要的。