如何在php上上传唯一命名的图像


How to upload uniquely named image on php?

你好,我有以下代码。我试图通过使用tempnam函数上传具有唯一名称的图像。

$upfile = tempnam('client_images', '');
unlink($upfile);
//move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile);
if($_FILES["userfile"]["type"] != "image/gif" && $_FILES["userfile"]["type"] != "image/pjpeg" && $_FILES["userfile"]["type"] != "image/png" && $_FILES["userfile"]["type"] != "image/jpeg") 
{ 
    echo "ERROR: You may only upload .jpg or .gif or .png files"; 
} 
else 
{ 
     if(!move_uploaded_file($_FILES["userfile"]["tmp_name"],$upfile)) 
     { 
     echo "ERROR: Could Not Move File into Directory"; 
     } 
     else 
     { 
     echo "Temporary File Name: " .$_FILES["userfile"]["tmp_name"]."<br />"; 
     echo "File Name: " .$_FILES["userfile"]["name"]."<br />"; 
     echo "File Size: " .$_FILES["userfile"]["size"]."<br />"; 
     echo "File Type: " .$_FILES["userfile"]["type"]."<br />"; 
     } 
    } 
    ?>

然而,由于某些原因,我无法在我的client_images文件夹中看到这些图像。

输出如下所示:

Temporary File Name: C:'Windows'Temp'phpA9F3.tmp
File Name: client.png

为什么Temp保存为.tmp而不是.png?我做错了什么吗?

Replace

if(!move_uploaded_file($_FILES["userfile"]["tmp_name"], $upfile)) {
    //take care of error
}

$nameyouwant = "sample"; //we'll use the extension from the source filename
$temp = explode(".", $_FILES["userfile"]["name"]);
$newfilename = $nameyouwant. '.' . end($temp); //add file extension
if(!move_uploaded_file($_FILES["userfile"]["tmp_name"],$upfile . $newfilename)) {
    //take care of error
}
else{
    //save success
}