Upload multiplo senza java e javascript

Oggi voglio proporvi come fare un upload multiplo di file in html+php. Ma non il solito upload multiplo con più campi input.
Usando solo html e php, sneza java e javascript

Infatti l’altro giorno ho scoperto un attributo di input: multiple=”multiple”.
Questo attributo permette di selezionare contemporaneamente più file, di conseguenza è necessario impostare l’attributo “name” come “file[]” in modo che lo script php, attivato dalla form, possa manipolare i file come un array.

Quindi il codice html per inviare più file sarà:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple="multiple" name="file[]" />
<input type="submit" />
</form>

Mentre in php i file verranno visti come dei sub-array delle varie proprietà di $_FILES['file']. Ad esempio se volessimo visualizzare il nome del secondo file inviato dovremmo fare $_FILES['file']['name'][1].
N.B. gli indici partono sempre da 0 in php

Infatti se proviamo a fare “print_r($_FILES['file'])” (dopo aver inviato due file), il risultato sarà:

Array
(
[name] => Array
(
[0] => Chrysanthemum.jpg
[1] => Desert.jpg
)

[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
)

[tmp_name] => Array
(
[0] => /tmp/php9m5Lzg
[1] => /tmp/php3Vqtya
)

[error] => Array
(
[0] => 0
[1] => 0
)

[size] => Array
(
[0] => 879394
[1] => 845941
)

)

Esempio completo

<?php
//sposto gli elementi in una directory chiamata file
if(isset($_FILES['file']))
    foreach($_FILES['file']['tmp_name'] as $key=>$value)
        @move_uploaded_file($value, dirname(__FILE__)."/file/".$_FILES['file']['name'][$key]);
?>
<html>
<head>
<title>upload</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple="multiple" name="file[]" />
<input type="submit" />
</form>
</body>
</html>
Ti è piaciuto questo articolo? allora iscriviti ai feed

Potrebbero interessarti anche...

Tag: , , , , , , , , , , ,



5 Commenti a “Upload multiplo senza java e javascript”

  1. Niko scrive:

    ciao, la tua guida spiega molto bene quello che sto cercando di fare, un singolo input per permettere l’upload multiplo, però ho dei problemi per quanto riguarda il foglio php a cui si rifà il form. E’ da giorni che ci provo ma ancora non è uscito nulla.
    Potresti darmi delle dritte? dirmi a grandi linee come si dovrebbe fare?

  2. cardi scrive:

    ciao, ho aggiunto un esempio completo all’articolo

  3. Niko scrive:

    grazie gentilissimo!!

  4. daniele scrive:

    Mi funziona tutto con Google Chrome ma con IE (io ho la versione 8) no.
    C’è qualche cosa da impostare?

  5. cardi scrive:

    credo che sia un problema di incompatibilità di IE e che quindi non ci sia soluzione

Lascia un Commento

Devi aver fatto il login per inviare un commento