Qualche giorno fa mi è stato chiesto per email di realizzare un articolo sugli upload multipli, cioè uno script che sia in grado di fare l’upload di più file o immagini contemporaneamente. La richiesta è avvenuta dopo la lettura di un mio recente articolo che trattava le basi dell’upload di immagini.
Esistono in rete diversi sistemi per eseguire l’upload multiplo. I più efficienti si avvalgono di una struttura a classi e permettono opzioni di livello avanzato.
Per lo scopo di questo articolo, però, ci fermeremo ai primi passi: invio dei file e recupero di ognuno di essi.
Si richiede la lettura (che è molto semplice) dell’articolo linkato sopra, sulla quale fonderò le basi di questo tutorial.
Il form
La creazione del form è molto semplice. L’unica cosa da ricordarsi è che l’attributo “name” deve contenere un nome con le parentesi quadre e che sia presente l’attributo “multiple”.
Di fatto, quando cercherete i file sul computer, potrete selezionarne più di uno tenendo premuto il tasto ctrl della tastiera.
1 2 3 4 5 |
<form action="" method="post" enctype="multipart/form-data"> <input type="file" name="file[]" multiple> <br /><br /> <input name="invia" type="submit" value="Carica i file" /> </form> |
Il recupero delle informazioni
Diamo un’occhiata al recupero delle informazioni. In seguito all’invio, i file saranno passati tramite l’array “$_FILES[‘file’][‘name’]”.
Nell’esempio i file saranno salvati nella cartella “upload_img”, la cui stringa è immagazzinata nella variabile $folder.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$folder='upload_img/'; if(isset($_FILES['file']['name'])){ $count=0; foreach ($_FILES['file']['name'] as $filename) { $destination=$folder; $origin=$_FILES['file']['tmp_name'][$count]; $count++; $destination=$destination.basename($filename); move_uploaded_file($origin, $destination); } } |
Da notare la variabile $count, un intero che si incrementerà a ogni ciclo. Sarà questa variabile a stabilire di volta in volta quale file prendere tra quelli passati.
(1) http://www.talentsfromindia.com