|
Home -> Manuali e Tutorials -> Guida PHP -> Upload
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
REALIZZARE UN UPLOAD DI FILES IN PHP
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:
- 0 : Nessun errore, si può procedere con l'upload del file, attraverso l'uso della funzione move_uploaded_file(), previo controllo sull'estensione del file stesso. La funzione move_uploaded_file() riceve come parametri, il valore temporaneo del file e quello effettivo comprensivo del percorso fino alla cartella dove uplodarlo. In pratica quando si clicca su uploda il file viene uplodato momentaneamente in una cartella temporanea sul server web, e poi se non si verificano ulteriori problemi, spostato nell'apposita cartella definita dalla variabile $upload_dir.
- 1 : Il file ha una dimensione superiore a quella impostata nel 'php.ini' .
- 2 : Il file ha una dimensione superiore a 2MB (che è la dimensione dai noi prefissata, che deve essere sempre inferiore o uguale a quella settata nel php.ini).
- 3 : Si è verificato un errore improvviso.
- 4 : Il file non è regolare; questo errore si verifica ogni volta che cliccate su uploda senza aver selezionato un file.
Se non si presentano errori, il file viene quindi "uplodato", attraverso l'uso della funzione move_uploaded_file, la cui sintassi è la seguente:
bool move_uploaded_file ( $file_name, $destinazione)
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:

Torna su | Indice Guida | Pagina << 34 >>
|