L'upload di file multipli è una funzionalità comune nelle applicazioni web moderne. PHP offre strumenti semplici ed efficaci per gestire questa operazione. In questo articolo, vedremo come creare un modulo per caricare file multipli e gestirli sul server.
Creazione del Modulo HTML
Per consentire agli utenti di caricare file multipli, è necessario utilizzare il campo <input>
con l'attributo multiple
. Ecco un esempio di modulo HTML:
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="files">Scegli i file da caricare:</label>
<input type="file" name="files[]" id="files" multiple>
<button type="submit">Carica</button>
</form>
Nota l'uso dell'attributo name="files[]"
: l'uso delle parentesi quadre permette di inviare un array di file al server.
Gestione dell'Upload in PHP
Il codice PHP per gestire i file caricati controlla la variabile globale $_FILES
. Ecco un esempio di script per gestire i file multipli:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Creare una cartella di destinazione se non esiste
$uploadDir = 'uploads/';
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
// Iterare sui file caricati
foreach ($_FILES['files']['tmp_name'] as $key => $tmpName) {
if ($_FILES['files']['error'][$key] === UPLOAD_ERR_OK) {
$fileName = basename($_FILES['files']['name'][$key]);
$destination = $uploadDir . $fileName;
// Spostare il file caricato nella cartella di destinazione
if (move_uploaded_file($tmpName, $destination)) {
echo "File $fileName caricato con successo.<br>";
} else {
echo "Errore nel caricamento del file $fileName.<br>";
}
} else {
echo "Errore nel file " . $_FILES['files']['name'][$key] . ".<br>";
}
}
} else {
echo "Nessun file caricato.";
}
?>
Validazione e Sicurezza
Durante l'upload, è importante effettuare delle verifiche per garantire la sicurezza. Ecco alcune best practice:
- Controllare il tipo MIME dei file con
mime_content_type()
. - Limitare la dimensione dei file usando
$_FILES['files']['size']
. - Sanitizzare i nomi dei file per evitare rischi di path traversal.
- Impostare permessi adeguati alla cartella di destinazione.
Conclusione
Implementare l'upload di file multipli con PHP è semplice e può essere fatto in pochi passaggi. Assicurati sempre di seguire le best practice per la sicurezza per evitare vulnerabilità nella tua applicazione.