2016-11-23 13 views
1

我不擅長php編碼,有人可以幫我用這個php上傳代碼。php文件上傳不會取代舊的

我有PHP文件上傳文件到服務器的作品完美,但我的問題是它會取代舊文件。我不想替換舊的,例如,如果文件存在上傳文件重命名(文件到文件_1)。

<?php 

$target_path1 = "uploads/"; 
/* Add the original filename to our target path. Result is "uploads/filename.extension" */ 
$target_path1 = $target_path1 . basename($_FILES['uploaded_file']['name']); 

if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target_path1)) { 

    echo "The first file " . basename($_FILES['uploaded_file']['name']) . " has been uploaded."; 
} else { 
    echo "There was an error uploading the file, please try again!"; 
    echo "filename: " . basename($_FILES['uploaded_file']['name']); 
    echo "target_path: " . $target_path1; 
} 

?> 

我會感謝您的幫助......

+2

你應該肯定**驗證你的用戶輸入。這段代碼看起來像任何人都可以上傳一個'.php'文件,通過瀏覽器訪問它並通過運行任意命令來執行它並危害你的服務器。 –

+0

上傳前請檢查文件是否已存在。將計數器值附加到新文件的文件名。 – RST

回答

1

檢查車況是否或在當你上傳的文件用。
if (file_exists("YOUR-FOLDER/" . $_FILES["file"]["name"])){ //code to rename your file name. Use time() or rand() etc... }

+0

感謝您的幫助,但不幸的是我無法使用我的代碼進行配置 – user1710911

+0

在此處粘貼您的完整代碼,所以我會查看一下。 –

0

檢查使用您的文件PHP函數isfile

if (!is_file('uploads/'.$_FILES['uploaded_file']['tmp_name'])) { 
    move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target_path1); 
} 

OR 您可以使用uniqueid

+0

感謝您的重播伴侶,我已經測試過您的代碼沒有任何變化。 – user1710911

+0

它將取代舊的 – user1710911

2

rename你的文件名,你可以試試這個

if(!file_exists("folder/".$_FILES["file"]["name"])){ 
     $file = "folder/".$_FILES["file"]["name"]; 
     if(move_uploaded_file($tmp_name, $file));{ 
     "your message" 
     } 
} else { 
     $file = "your folder/01_".$_FILES["file"]["name"]; 
     if(move_uploaded_file($tmp_name, $file));{ 
     "your message" 
    } 
    } 

,你可以也使用r和()函數重命名

0

我想有兩個解決方案爲您 如果你只是想新的文件名可以在文件名

if(isset($_FILES['uploaded_file']['name']) && !empty($_FILES['uploaded_file']['name'])){ 
    $tFile = $_FILES['uploaded_file']; 
    $fileName=time().$tFile['name']; 
    $mn_dir='your folder location'.$fileName ; 
    if([email protected]_uploaded_file($tFile['tmp_name'] , $mn_dir)){ 
     return true 
    }else{ 
     return false 
    } 
} 

的末尾添加時間,但如果你想檢查文件存在

if(file_exists("Your Folder/".$_FILES['uploaded_file']['name'])){ 
    // you can add number to file , I think you should add tile because file_1 and file_2 , ... may be exist 

    $tFile = $_FILES['uploaded_file']; 
    $fileName=time().$tFile['name']; 
    $mn_dir='your folder location'.$fileName ; 
    if([email protected]_uploaded_file($tFile['tmp_name'] , $mn_dir)){ 
     return true 
    }else{ 
     return false 
    } 

}else{ 
    // upload the file 
} 
+0

感謝隊友的幫助,但我無法成功。我必須將所有的代碼添加到else語句中嗎? – user1710911

0

製作一個功能類似

public function getUniqueName($path, $name) { 
    $name = str_replace(" ", "_", mb_eregi_replace('\s+', ' ', $name)); 

    $i = 0; 
    $uniqueName = $name; 
    while (file_exists("{$path}/{$uniqueName}")) { 
     $i++; 
     $uniqueName = $name . $i; 
    } 
    return $uniqueName; 
} 

並上傳之前喲你的文件,通過函數獲得一個唯一的名字。希望能幫助到你。