2012-04-14 13 views
1

Ich habe eine Dateieingabe namens 'Name = DateiImage'. Jetzt habe ich PHP-Code unten, wo überprüft er, ob die Datei in den Ordner (Imagefiles) vorhanden ist oder nicht:So laden Sie eine Datei mit einem anderen Dateinamen

if (file_exists("ImageFiles/" . $_FILES["fileImage"]["name"])) 
    { 

    } 

Meine Frage, dass, wenn eine Datei in dem Ordner nicht vorhanden ist, wie kann es codiert, so werden, dass Es lädt die Datei zwar hoch, gibt ihr aber einen anderen Dateinamen. Vielleicht etwas wie automatisch eine Nummer am Ende des Dateinamens hinzufügen, um einen anderen Dateinamen zu geben?

+0

Ich würde argumentieren, dass hochgeladene Dateien in der Regel mit Namen vollständig getrennt von ihren ursprünglichen Namen gespeichert werden sollten. Auf diese Weise verhindern Sie die Offenlegung von Informationen (Personen, die Links von "myfile.txt" zu "test.txt", "secret.doc" usw. ändern, um die Dateien anderer Personen zu sehen), müssen sich nicht um internationale Zeichen in Dateinamen kümmern, und vermeiden Sie Komplikationen, wenn Sie die Dateien in ein anderes Dateisystem kopieren müssen (z. B. Kopieren nach Windows zur Entwicklung führt zu Fehlern, wenn Sie "test.txt" und "Test.txt" im selben Ordner haben). – DCoder

Antwort

6

$_FILES ist nur eine Variable, die superglobal ist und bereits mit Daten zum Hochladen von Dateien gefüllt ist. Das heißt, Sie können es leicht ändern.

Zum Beispiel:

if(file_exists("ImageFiles/".$_FILES['fileImage']['name'])) { 
    $parts = explode(".",$_FILES['fileImage']['name']); 
    $ext = array_pop($parts); 
    $base = implode(".",$parts); 
    $n = 2; 
    while(file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++; 
    $_FILES['fileImage']['name'] = $base."_".$n.".".$ext; 
} 
// now use $_FILES['fileImage']['name'] just like you would normally 
0

Wenn Sie die hochgeladene Datei zu einem Namen Ihrer Wahl umbenennen möchten, können Sie

<?php 

    //Any file name user/uploader has chosen/used on his/her computer 
    $tmp_name = $_FILES["domainfile"]["tmp_name"]; 

    //Name you want 
    $name = "MyDesiredName.png"; //save as MyDesiredName.png 

    //Move/save file 
    move_uploaded_file($tmp_name, $name); 

?> 

Offensichtlich dieser Code versuchen, die alte Datei jedes Mal ein ersetzen Neue Datei wird hochgeladen.
Um dies nicht zuzulassen, müssen Sie eine Variable in den $ name
eingeben und $ name ++ eingeben und eine Möglichkeit finden, ihren Wert für zukünftige Referenz zu speichern.

Verwandte Themen