2014-10-05 67 views
0

我目前正在研究一個簡單的上傳腳本。上傳帶有唯一名稱的圖像(PHP)

但是,由於iPhone將所有圖像命名爲「image.jpg」,因此用戶上傳iPhone中的圖像時出現問題,並且您不能擁有兩張同名的圖像。

有沒有什麼辦法在下面的上傳過程中向文件名中添加一個隨機字符串?我是PHP新手!

$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 

if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 3000000000) 
&& in_array($extension, $allowedExts)) { 
    if ($_FILES["file"]["error"] > 0) { 
    } else { 
    if (file_exists("../../upload/" . $_FILES["file"]["name"])) { 
    } else { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../../upload/" . $_FILES["file"]["name"]); 
     $image_link = 'http://www.martahedin.com/EveryLife/upload/' . $_FILES["file"]["name"]; 
    echo $image_link; 
    } 
    } 
} else { 
    echo "Invalid file"; 
} 

回答

-1

如果你只是想有一個不同的文件名試試: 蘭特(0,9999)

這樣的:

move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../../upload/" .rand(0,99999). $_FILES["file"]["name"]); 

更新:

$newName = rand(0,99999). $_FILES["file"]["name"]; 

move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../../upload/" . $newName); 

$image_link = 'http://www.martahedin.com/EveryLife/upload/' . $newName; 


    echo $image_link; 
+0

仍然被命名爲 「image.jpg的」 文件...任何想法? – Evee 2014-10-05 21:24:26

+0

我想你可能會說錯了,你可以發佈你的更新代碼嗎? – Ryan 2014-10-05 21:26:45

+0

對不起。圖像具有唯一的名稱,但$ image_link;即使該文件被稱爲別的東西,它仍然是image.jpg。有關於此的任何想法? – Evee 2014-10-05 21:29:33

0

的服務器端文件名是在該行指定:

move_uploaded_file($_FILES["file"]["tmp_name"], 
    "../../upload/" . $_FILES["file"]["name"]); 

如果你想爲唯一的字符串添加到該文件名,你可以把它添加到該行。一種選擇,例如,可能僅僅是加上獨特的字符串到現有的文件名:

move_uploaded_file($_FILES["file"]["tmp_name"], 
    "../../upload/" . uniqid() . $_FILES["file"]["name"]); 
0

下面是修改你的代碼做你想要什麼。將$目標變量更改爲您所需的任何格式。將$ uniquevalue更改爲您希望用於唯一性的任何內容。

$allowedExts = array("gif", "jpeg", "jpg", "png"); 

// Get the file extension 
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); 

// Get the file name without the extension 
$filename = basename($_FILES["file"]["name"], ".$extension"); 

// Define your unique identifier - this example uses unix timestamp 
$uniquevalue = time(); 

// Combine the above parts in the form you wish 
$destination = $filename . '-' . $uniquevalue . '.' . $extension; 

if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 3000000000) 
&& in_array($extension, $allowedExts)) { 
    if ($_FILES["file"]["error"] > 0) { 
    } else { 
    if (file_exists("../../upload/" . $_FILES["file"]["name"])) { 
    } else { 
     // Changed $_FILES["file"]["name"] to $destination 

     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../../upload/" . $destination); 
     $image_link = 'http://www.martahedin.com/EveryLife/upload/' . $destination; 
    echo $image_link; 
    } 
    } 
} else { 
    echo "Invalid file"; 
} 
0


您可以更改這部分代碼

move_uploaded_file($_FILES["file"]["tmp_name"], "../../upload/" . $_FILES["file"]["name"]); 

通過

move_uploaded_file($_FILES["file"]["tmp_name"], "../../upload/" . uniqid() . "_" . $_FILES["file"]["name"]); 

希望它可以幫助