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

时间:2016-10-30 14:08:29

标签: php html css file-upload upload

我想更改上传文件的名称,例如,如果我选择上传文件“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变量。

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

  

既然你说你已经尝试过(看起来你真的有),这里有一个解释:

在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 - 您将获得所需内容。