Intanto salve a tutti e complimenti per il sito e il foro, dove ho piú volte trovato consigli importanti e capito come risolvere i vari problemucci che ho incontrato durante la creazione del sito a cui sto lavorando.
È in buona parte anche grazie a voi che ora è quasi pronto, ma...
in una sezione del sito ho bisogno di fornire all'utente la possibilitá di inviarmi alcuni documenti.
L'utente deve poter inviare uno o piú documenti (numero variabile).
Ho preparato allora un modulo d'inserimento con un solo input, e un pulsante ("allega un altro documento") che richiama un codice javascript che inserisce progressivamente nuovi input di tipo file.
Il modulo contiene la variabile nascosta "attachnum" che viene incrementata cliccando su ("allega un altro"). Il nome degli iput è doc1,doc2,doc3 ecc.
A questo punto, premendo su invia, la pagina lanciata, dopo aver letto i dati inviati usa questo ciclo:
upload() funziona bene (benino), se voglio inviare un solo documento.for ($num=1; $num<=$numeroallegati; $num++){
$name="doc".$num; //Name of the file passed by the form
$res=upload($name,$num,$finalfilename);
}
Se ne invio piú di uno, funziona tutto benissimo, tranne che per l'ultimo.
Vi copincollo un risultato d'esempio:
Non dipende in alcun modo dal tipo di fascicolo che allego per ultimo... ho provato con diversi documenti, ma niente, il problema non è nel caricare quel determinato documento (se lo invio in un ingresso diverso dall'ultimo funziona correttamente), ma proprio nell'ultima chiamata alla funzione, e questa cosa non me la so proprio spiegare!
Allegati da inviare: 5.
Allegato 1 caricato correttamente
.
Allegato 2 caricato correttamente
.
Allegato 3 caricato correttamente
.
Allegato 4 caricato correttamente
.
Si è verificato un problema durante il caricamente dell'allegato 5. Errore:
Il codice di upload() è:
Ho tolto la parte riguardante il controllo del tipo e delle dimensioni (il problema non è lí, comunque) e tolto la parte riguardante l'assegnazione di $target (ho implementato un procedimento un po' complicato per la determinazione del nome del documento, ma ora non è rilevante).function upload($file,$num,$finalname) {
$target = $finalname;
if (!(is_uploaded_file($_FILES[$file]['tmp_name']))) {
//error while uploading the file
echo "
Si è verificato un problema durante il caricamente dell'allegato ".$num.". Errore: ".$_FILES[$file]['error']."</p>";
return -1;
}
//EVERYTHING OK
//UPLOAD THE FILE
if (move_uploaded_file($_FILES[$file]['tmp_name'],$target)) {
echo "
Allegato ".$num." caricato correttamente</p>.";
return 1;
} else {
echo "
Si è verificato un problema con l'allegato ".$num.". Errore: ".$_FILES[$file]["error"].".</p>";
return -1;
}
} //END OF UPLOAD FUNCTION
Poiché il messaggio di errore restituito è "Si è verificato un problema durante il caricamente dell'allegato", si evince che il problema avviene nel momento in cui chiamo is_uploaded_file.
Il dubbio è... perché? O meglio, perché solo con l'ultimo? Cosa cambia?
Grazie in anticipo...
PS: (ho un problemuccio anche con la funzione di controllo del tipo. Ne parlo qui o apro un altro filone?)