Llevaba tiempo sin tocar el PHP, sumergido en el lado del mal (aka ASP y otras cosas de Microsoft), pero el otro día tuve que retomarlo. El PHP es como ese amigo de toda la vida que por vicisitudes laborales ahora sólo puedes ver una vez cada varios meses, pero con el que te sientas en la barra de un bar y parece que todavía os visteis ayer.
El caso es que tenía que modificar un formulario para que permitiera implementar una subida de múltiples archivos. ¿Cómo va esto? Bueno, vamos con el marcado HTML:
<form action="index.php" method="post" enctype="multipart/form-data"> <input name="upload[]" type="file" multiple="multiple" /> </form>
Puntos importantes: el enctype=»multipart/form-data» en la etiqueta form para que este envíe correctamente los archivos que subimos, el definir el nombre del input como un array poniendo los corchetes [] y la etiqueta multiple=»multiple» que nos permitirá seleccionar varios items a las vez.
Vamos ahora con el PHP con explicación línea a línea:
// RECORREMOS LOS FICHEROS for($i=0; $i<count($_FILES['upload']['name']); $i++) { //Obtenemos la ruta temporal del fichero $fichTemporal = $_FILES['upload']['tmp_name'][$i]; //Si tenemos fichero procedemos if ($fichTemporal != ""){ //Definimos una ruta definitiva para guardarlo $destino = "./nuestraCarpeta/" . $_FILES['upload']['name'][$i]; //Movemos a la ruta final if(move_uploaded_file($fichTemporal, $destino)) { //imprimimos el nombre del archivo subido printf("Se ha subido el fichero %s.",$_FILES['upload']['name'][$i]); } } }