2015-06-21 36 views
0

如何使用此代碼爲上傳的文件創建唯一的ID。爲上傳的圖片創建唯一的ID

代碼上傳圖片,但是當您使用iPhone上傳時,所有圖片都以image.jpg的形式出現。所以我需要一個函數來重命名現有的文件,或者只是爲每個文件創建唯一的ID。

<form enctype="multipart/form-data" action="" method="POST"> Please choose a file: <input name="uploaded" type="file" /><br /> <input type="submit" value="Upload" /> </form> 
<?php 
function findexts ($filename) { $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; return $exts; } 

$ext = findexts ($_FILES['uploaded']['name']) ; 


$ran = rand() ; 
$ran2 = $ran."."; 
$target = "uploads/"; 

if(file_exists("uploads/$filename")) unlink("uploads/$filename");move_uploaded_file($target, "uploads/$filename"); 

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) { echo "The file has been uploaded as ".$ran2.$ext; } else { echo "Sorry, there was a problem uploading your file."; } 
$target = $target . $ran2.$ext; 

回答

0

您可以使用uniqid()函數獲取唯一的圖像名稱。它有兩個參數。第一:前綴,第二:更多的熵。

看詳情點擊這裏:http://php.net/manual/en/function.uniqid.php

<form enctype="multipart/form-data" action="" method="POST"> Please choose a file: <input name="uploaded" type="file" /><br /> <input type="submit" value="Upload" /> </form> 
    <?php 
    function findexts ($filename) { 
     $filename = strtolower($filename) ; 
     $exts = split("[/\\.]", $filename) ; 
     $n = count($exts)-1; 
     $exts = $exts[$n]; return $exts; 
    } 

    $ext = findexts ($_FILES['uploaded']['name']) ; 

    //unique image 
    $new_image_name = uniqid("IMG_",false); 
    $final_name = $new_image_name.".".$ext; 

    //Target directory 
    $target = "uploads/"; 

    if(file_exists("uploads/$final_name")) unlink("uploads/$final_name");move_uploaded_file($target,"uploads/$final_name"); 

    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) { echo "The file has been uploaded as ".$final_name; } else { echo "Sorry, there was a problem uploading your file."; } 
    $target = $target . $final_name;