2015-02-23 84 views
0

因此,我已經按照此鏈接http://www.w3schools.com/php/php_file_upload.asp來創建照片上傳功能,而不是它說該文件已經上傳,當有另一個同名的文件,我將如何改變它文件名稱以前還沒有使用的其他文件。照片上傳防止覆蓋

換句話說,如果有另一張同名照片,我仍然希望它上傳,但我不希望它覆蓋現有的照片。

我basicaly想別的東西來代替這做那

// Check if file already exists 
if (file_exists($target_file)) { 
echo "Sorry, file already exists."; 
$uploadOk = 0; 

,以便其像這樣

// Check if file already exists 
if (file_exists($target_file)) { 
"do something to change file name" 
$uploadOk = 1; 

更新:我得到它的工作。我只是這樣做,它會將每個圖像重命名爲一個獨特的ID,如下面所述。感謝

也在這個建議應該是這樣

$newTarget_file = $target_dir . uniqid() . "." . end($target_file); 
+0

只要檢查'file_exists($ target_file)'如果是的話重命名並上傳文件 – 2015-02-23 06:03:30

+0

但我可以自動執行嗎?我不希望他們必須重命名它,只是爲了找出該名稱也被採取,然後必須重新執行 – 2015-02-23 06:07:10

+0

上傳後在服務器上隨機生成文件名? – Jon 2015-02-23 06:08:38

回答

1

添加隨機numers重命名文件

$name = explode(".",$_FILES["file"]["name"]); 
$newName = rand(1,99999) . '.' .end($name); 
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newName); 

或者你也把if條件來驗證文件名存在與否。如果文件可用,請添加一些內容以重命名文件。

+0

應該使用[uniqid](http://php.net/uniqid)而不是1-9999之間的隨機^^ – Jon 2015-02-23 06:20:41

+0

如果你想添加uniq id,那麼它應該用作 $ newName = uniqid()。end($ name); 或 $ newName = end($ name).uniqid(); – 2015-02-23 06:27:09

+0

這仍然只是覆蓋它 – 2015-02-23 06:37:28