@Portaile84 said:
L'errore che ho notato io è che nella prima riga manca il punto e virgola finale... Corretto qui sotto.
[php]$filePath = "path/dovevoglio/salvare il file/";
$fileName = $_FILES['miofile']['name'];
$ext = strtolower(strrchr($fileName,"."));
while(file_exists($filePath.$fileName)) {
if($cc==1) $fileName = eregi_replace($ext, "-".$cc.$ext, $fileName);
else $file_name = eregi_replace("-".($cc-1).$ext, "-".$cc.$ext, $fileName);
$cc++;
} [/php]Inoltre permettetemi una critica:
Immaginiamo che nella cartella siano presenti moooolti file con la stessa radice.
Ad esempio: nomefile-[X].ext dove X è un numero progressivo ogni volta maggiore di 1.
Assumiamo di avere (lo so la cosa è un pò forzata, ma un programmatore deve raggionare anche così) tanti file come sopra descritti per quantitativo superiore al migliaio...
La mia domanda è: seppure la potenza di un server non è poca... perchè comunque si deve eseguire un ciclo while per tutte le volte che non viene soddisfatta la condizione di terminazione?
Mi spiego meglio inserendo il codice che userei io:
[php]
$fileName = $_FILES['miofile']['name'];
$fileName = time().$fileName;
[/php]Che ne dite?
Il nome sarà sicuramente univoco. Evito tutti i controlli per file duplicati, risparmio risorse del server...
Ciò che restituisce il codice che ho scritto, non è altro che il file precedentemente caricato preceduto però dal timestamp.
Logico.
Il mio era solo uno spunto su cui lavorare.
Poi dipende sempre da ciò che si deve fare.