2013-03-26 6 views
6

W wielu sytuacjach musimy zmienić nazwę pliku na serwerze podczas tworzenia, aby zapobiec duplikacji. Najczęstszą odpowiedzią na to pytanie jest dołączenie znacznika czasu na końcu lub zapisanie nazwy pliku w bazie danych i użycie tych zapisanych wartości do obliczenia nowej nazwy. Są dobre i wszystkie, ale dołączenie długiego znacznika czasu nie zawsze jest bardzo przyjazne dla użytkownika, a przechowywanie w bazie danych nie zawsze jest możliwe. Jak więc możemy automatycznie zwiększyć standardową nazwę pliku podczas tworzenia go za pomocą php?Jak zwiększyć nazwę pliku w php, aby zapobiec duplikatom?

Odpowiedz

8

Oto prosta funkcja Napisałem do tego celu:

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; 
    } 
} 

ZASTOSOWANIE:

$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

Wszystkie te odpowiedzi wydaje się przesadą:

$k = 0; 
while(!$result){ 
    if(!file_exists("file[$k].ext")) 
     $result = "file[$k].ext"; 
    $k++; 
} 
makefile($result); 
Powiązane problemy