Vediamo come creare una semplice applicazione per l'upload di files sul web (
), quali ad esempio files di immagine di estensione .gif, .jpg, .png, .bmp, .jpeg e di dimensione massima pai a 2MB. Un esempio è visibile qui.
Il codice php necessario per realizzare l'applicazione in questione è il seguente:
|
<html> <body> <SPAN class=genmed>Dimensione Massima ammessa: <B>2000000</B> bytes (2MB).</SPAN><BR> <SPAN class=genmed>Estensioni ammesse : <B>.gif .jpg .png .jpeg .bmp</B>.</SPAN> <BR><BR> <form action="upload.php" method="post" enctype="multipart/form-data"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2000000"> <input name="userfile" type="file" size=50> <input type="submit" value="Uploda"> </form> </body></html> <?php //print_r($_FILES["userfile"]); $upload_dir="img/"; // directory di upload $extensions = array('image/gif','image/jpg','image/pjpeg','image/x-png','image/bmp'); // per uplodare solo le IMMAGINI // Gestione degli Errori: switch($_FILES["userfile"]["error"]) { case 0: { if(!in_array($_FILES["userfile"]["type"],$extensions)) { echo("Il file <I><B>".$_FILES["userfile"]["name"]."</B></I> ha un'estensione non valida !!"); } else { if(move_uploaded_file($_FILES["userfile"]["tmp_name"],$upload_dir.$_FILES["userfile"]["name"])) { echo("Il file <I><B>".$_FILES["userfile"]["name"]."</B></I> è stato uplodato con successo !!!"); } else { echo("Si è verificato un errore improvviso!! Riprova..."); } } }break; case 1: echo("Il file <I><B>".$_FILES["userfile"]["name"]."</B></I> ha una dimensione superiore a quella del 'php.ini' !!"); break; case 2: echo("Il file <I><B>".$_FILES["userfile"]["name"]."</B></I> ha una dimensione superiore a 2MB !!"); break; case 3: echo("Si è verificato un errore improvviso!! Riprova..."); break; case 4: echo("Devi inserire almeno un file immagine valido !!"); break; } ?> |
Tutte le informazioni inviate vengono catturate dal vettore variabile globale $_FILES, essendo il form di tipo "multipart/form-data"; esso conterrà il nome del file, la dimensione massima ammessa per un file uplodato, una chiave chiamata ERROR riportante gli errori che si potrebbero generare durante l'upload del file, il nome temporaneo del file stesso, e la sua tipologia nella chiave definita da TYPE.
I valori ammessi da $_FILES["ERROR"] possono variare da 0 a 4:
Se non si presentano errori, il file viene quindi "uplodato", attraverso l'uso della funzione move_uploaded_file, la cui sintassi è la seguente:
Restituisce quindi un valore booleano (true / false), ed accetta come parametri il nome del file temporaneo caricato nella cartella temporenea del pc ed il percorso di destinazione comprensivo del nome del file effettivo. Questa funzione, quindi, verifica che il file indicato da file_name è un file validamente caricato (nel senso che è stato caricato attraverso il meccanismo di caricamento HTTP POST di PHP). Se il file è valido, verrà "spostato" (copiato) nel file dato da destinazione.
Il codice php risula essere quindi abbastanza semplice da gestire e capire. Bisogna ricordare che per poter uplodare le immagini nell'apposita cartella "img", nel caso in cui l'host è un server Linux, bisogna cambiare le proprietà della cartella stessa esattamente come mostra la figura seguente:
