Quote Originariamente inviata da Alhazred Visualizza il messaggio
Prima di tutto alcune annotazioni:
da
if(empty($errors)==true){
if(file_exists("$directory/".$fileName)== true){

puoi rimuovere ==true � sottointeso.

mentre
if(is_dir($directory)==false){
if(is_dir("$directory/".$fileName)==false){

puoi scriverli
if( ! is_dir($directory) ){
if( ! is_dir("$directory/".$fileName) ){

Non che come fai tu sia sbagliato, ma cos� il codice diventa un po' pi� pulito.

Veniamo al tuo problema:
tu prima fai l'upload e sposti il file nella cartella con move_uploaded_file() e solo dopo controlli se c'� (con file_exists() ), ovvio che c'�, ce l'hai appena messo, infine lo rinomini.
Il risulato � che prima sovrascrivi il vecchio file e poi cambi il nome, ti ritrovi solo col nuovo file col nome cambiato.

Devi fare il contrario, prima controllare se nella cartella c'� un file con quel nome, e poi copiarci quello che stai caricando modificandone il nome se necessario.

Altra cosa:
con
$fileName.time()

quello che fai � appendere un timestamp dopo l'estensione del file!
dovresti fare
time().$filename;
Ciao Alhazred grazie mille per la risposta, funziona tutto alla grande! Sei un grande!

Alcune considerazioni: impostando il rename con time() il file da caricare, se gi� di suo � nominato con una stringa di molti caratteri, verrebbe abbastanza lungo. Cio� carico il file malattia_dipendente_cheneso_blablabla.pdf, questo file � gi� presente, quindi il codice gli aggiunge il timestamp.

Domanda: per accorciare il nome del file come posso fare?

Altra considerazione: ho impostato nel file php.ini il numero massimo di upload in 5 file da poter caricare simultaneamente e funziona. quindi se io seleziono 7 file dal form, in cartella ne vengono caricati solo 5. Quindi penso all'utente sbadato che che ne seleziona piu di 5 e preme invio. Se non controlla nella sua pagina personale, penser� di averli caricati tutti. Domanda: c'� modo di bloccare l'invio se l'utente seleziona piu di 5 file e di avvisarlo ?