Múltiples archivos pueden ser subidos utilizando diferentes name para los input.
También es posible subir múltiples archivos simultáneamente y tener la información organizada automáticamente en arrays. Para ello, es necesario utilizar la misma sintaxis de sumisión de array en el formulario HTML como se hace con múltiples selects y checkboxes:
Ejemplo #1 Subida de múltiples archivos
<form action="file-upload.php" method="post" enctype="multipart/form-data"> Enviar estos archivos:<br /> <input name="userfile[]" type="file" /><br /> <input name="userfile[]" type="file" /><br /> <input type="submit" value="Send files" /> </form>
Cuando el formulario de arriba se remite, los arrays $_FILES['userfile'], $_FILES['userfile']['name'] y $_FILES['userfile']['size'] serán inicializados (así como en $HTTP_POST_FILES para las versiones de PHP anteriores a 4.1.0). Cuando register_globals está activado, globales para los archivos subidos también se inicializan. Cada uno de estos será un array indexado numéricamente de los valores correspondientes a los archivos remitidos.
Por ejemplo, suponga que los nombres de archivo /home/test/review.html y /home/test/xwp.out son remitidos. En este caso,$_FILES['userfile']['name'][0] contendría el valor review.html, y $_FILES['userfile']['name'][1] contendría el valor xwp.out. De manera similar, $_FILES['userfile']['size'][0] contendría el tamaño del archivo review.html y así sucesivamente.
$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0], y $_FILES['userfile']['type'][0] también son establecidos.
A partir de PHP 5.2.12, la configuración max_file_uploads actúa como un límite en el número de archivos que se pueden subir en una petición. Se necesita asegurar que el formulario no intenta cargar más archivos que este límite en una petición.