PHP: Upload file
Upload di file in PHP
PHP permette di gestire il caricamento di file da un form HTML. Per motivi di sicurezza e funzionamento corretto è necessario configurare e validare i file caricati.
Introduzione all’upload dei file
Per consentire il caricamento dei file è necessario un form HTML con l’attributo enctype="multipart/form-data". In PHP i file inviati vengono gestiti tramite la superglobale $_FILES, che contiene informazioni come nome, tipo, dimensione e percorso temporaneo.
Esempio: form e script di upload
Nell’esempio seguente viene creato un form e uno script PHP che sposta il file caricato in una cartella.
Codice Esempio: caricamento file
<!-- form.html --><form action="upload.php" method="post" enctype="multipart/form-data">Seleziona file: <input type="file" name="fileDaCaricare"><input type="submit" value="Carica"></form><!-- upload.php --><?php$target_dir = "uploads/";$target_file = $target_dir . basename($_FILES["fileDaCaricare"]["name"]);if (move_uploaded_file($_FILES["fileDaCaricare"]["tmp_name"], $target_file)) {echo "Il file " . basename($_FILES["fileDaCaricare"]["name"]) . " è stato caricato con successo.";} else {echo "Errore durante il caricamento del file.";}?><!-- Output nel browser (se file ok):Il file esempio.png è stato caricato con successo.-->
⚠️ Nota Bene:
Gli esempi sono a puro scopo didattico. Si sconsiglia di utilizzarli tali e quali in ambienti di produzione.
Controlli di sicurezza
È importante applicare controlli prima di accettare un file:
- Verificare la dimensione massima
- Consentire solo alcuni tipi di file (es. immagini)
- Sanificare il nome del file
Codice Esempio: controlli aggiuntivi
<?php$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileDaCaricare"]["name"]);
$tipo_file = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Controllo tipo file (solo immagini)if ($tipo_file != "jpg" && $tipo_file != "png" && $tipo_file != "gif") {
die("Sono consentiti solo file JPG, PNG e GIF.");
}// Controllo dimensione (max 2MB)if ($_FILES["fileDaCaricare"]["size"] > 2000000) {
die("Il file è troppo grande (max 2MB).");
}// Upload se i controlli sono passatiif (move_uploaded_file($_FILES["fileDaCaricare"]["tmp_name"], $target_file)) {
echo "Upload riuscito: " . htmlspecialchars(basename($_FILES["fileDaCaricare"]["name"]));
} else {
echo "Errore nell’upload.";
}?>
⚠️ Nota Bene:
Gli esempi sono a puro scopo didattico. Si sconsiglia di utilizzarli tali e quali in ambienti di produzione.
Tabella riassuntiva $_FILES
| Indice | Descrizione | Esempio |
|---|---|---|
| $_FILES['nomeCampo']['name'] | Nome originale del file | documento.pdf |
| $_FILES['nomeCampo']['type'] | Tipo MIME dichiarato | image/png |
| $_FILES['nomeCampo']['size'] | Dimensione in byte | 24567 |
| $_FILES['nomeCampo']['tmp_name'] | Percorso temporaneo | /tmp/phpYzdqkD |
| $_FILES['nomeCampo']['error'] | Codice di errore | 0 |
Considerazioni
Il caricamento di file è utile ma potenzialmente pericoloso. È fondamentale validare tipo, dimensione e nome dei file prima di salvarli sul server.

IP: 216.73.216.214