Upload di file con PHP

Creato il 07 giugno 2012 da Ketek @CarloVentrella

Oggi vediamo come è possibile realizzare l'upload dei file all'interno del nostro sito utilizzando poche righe di codice php ed html.  

Il codice per ottenere un risultato funzionante ed essenziale può esser diviso in due sezioni differenti: la lettura del file tramite form HTML e l'upload vero e proprio con PHP.

E' possibile inserire il tutto in un'unica pagina ma ho preferito dividerlo in due pagine per una visualizzazione più pulita del codice.

Prima di visualizzare il codice è utile focalizzarsi su alcuni punti: è fondamentale un uso appropriato del valore MAX_FILE_SIZE, un valore da settare secondo le proprie esigenze e che non deve essere troppo grande;l'upload è infatti un' operazione molto delicata in quanto ha il compito di inserire file all'interno del server, sono quindi necessari più controlli in base alle proprie necessità! Alcuni tra questi potrebbero essere dei controlli sull'estensione del file in modo da filtrare i file da inserire.

HTML

 
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="hidden" name="MAX_FILE_SIZE" value="10000">
<input type="submit" value="Upload">
</form>
 

PHP

 
$upload_dir = "./uploads"; // cartella in cui il file sarà salvato
// Eventuale nuovo nome da dare al file uploadato
$file_name = $_FILES["upfile"]["name"];
if(trim($_FILES["upfile"]["name"]) == "") {
die("Non hai indicato alcun file per l'upload!");
}
if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name")
or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");
} else {
die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);
}
echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";
 

CONTROLLO SUL TIPO DI FILE

E' anche possibile effettuare maggiori controlli sul file ricevuto, per esempio permettere l'upload di file esclusivamente .gif o .jpeg , vediamo come:

 
$allowed_types = array("image/gif","image/jpeg");
if(!in_array($_FILES["upfile"]["type"],$allowed_types)) {
die("Upload non consentito per questo tipo di file. ");
}