2013-03-26 12 views
6

In vielen Situationen müssen wir den Dateinamen beim Erstellen auf dem Server anders angeben, um eine Duplizierung zu vermeiden. Und die häufigste Antwort darauf scheint zu sein, den Zeitstempel am Ende anzufügen oder den Dateinamen in der Datenbank zu speichern und diese gespeicherten Werte zu verwenden, um einen neuen Namen zu berechnen. Diese sind gut und alle, aber das Anhängen eines langen Zeitstempels ist nicht immer sehr benutzerfreundlich, und das Speichern in der db ist nicht immer eine Option. Also, wie können wir einen Standard-Dateinamen automatisch erhöhen, während wir ihn über PHP erstellen?So erhöhen Sie Dateinamen in PHP, um Duplikate zu verhindern

Antwort

8

Hier ist eine einfache Funktion, die ich für diesen Zweck geschrieben:

function incrementFileName($file_path,$filename){ 
if(count(glob($file_path.$filename))>0) 
{ 
    $file_ext = end(explode(".", $filename)); 
    $file_name = str_replace(('.'.$file_ext),"",$filename); 
    $newfilename = $file_name.'_'.count(glob($file_path."$file_name*.$file_ext")).'.'.$file_ext; 
    return $newfilename; 
    } 
    else 
    { 
    return $filename; 
    } 
} 

ANWENDUNG:

$newName = incrementFileName("uploads/", $_FILES["my_file"]["name"]); 
move_uploaded_file($_FILES["my_file"]["tmp_name"],"uploads/".$newName); 
1
function incrementFileName($file_path,$filename){ 
    $array = explode(".", $filename); 
    $file_ext = end($array); 
    $root_name = str_replace(('.'.$file_ext),"",$filename); 
    $file = $file_path.$filename; 
    $i = 1; 
    while(file_exists($file)){ 
    $file = $file_path.$root_name.$i.'.'.$file_ext; 
    $i++; 
    } 
    return $file; 
} 
6

All diese Antworten scheinen viel des Guten:

$k = 0; 
while(!$result){ 
    if(!file_exists("file[$k].ext")) 
     $result = "file[$k].ext"; 
    $k++; 
} 
makefile($result); 
Verwandte Themen