Enviando múltiples archivos
<html><body><form action="multiplesArchivos.php" method="post" enctype="multipart/form-data"><input name="archivos[]" type="file"><input name="archivos[]" type="file"><br><input name="archivos[]" type="file"><input name="archivos[]" type="file"><br><input type="submit" value="Enviar"></form></body></html>
- Cabe resaltar que los nombres de los campos lleven corchetes, indicando que pertenece a una matriz.
- Esto hará que los campos sean enviados al servidor como una matriz.
- No se les ha atribuido un índice, de modo que el primer campo tomará el índice 0, el segundo el índice 1 y así sucesivamente.
<?php// Se define el salto de línea.define ("salto","<br>\n");/* Se contabiliza el número total de elementos de la matriz"archivos", cuyo nombre se corresponde con los campos enviadosdesde el formulario. Dado que, dicho formulario tiene cuatrocampos de archivo pertenecientes a la misma matriz, ese es elnúmero de elementos que esta contiene. Eso es independiente deque en los campos se haya introducido un valor o no. Los camposexisten, aunque no tengan contenido.*/$totalDeArchivos=count($_FILES["archivos"]["tmp_name"]);echo ("El total de campos de archivo es de: ".$totalDeArchivos.salto);echo ("Sin embargo, puede que no todos contengan un archivo.".salto);echo (salto.salto);/* Se recorren los cuatro campos, comprobando su propiedadname. Si no existe quiere decir que el campo no tienecontenido, es decir, que no se ha subido ningún archivoen ese campo.*/echo ("A continuación se muestra la propiedad \"name\" (nombre)".salto);echo ("de cada uno de los archivos subidos.".salto);for ($contador=0; $contador<$totalDeArchivos; $contador++) {echo ("<b>ARCHIVO $contador:</b> ");if ($_FILES["archivos"]["name"][$contador]==""){echo ("NO EXISTE".salto);} else {echo ("\"".$_FILES["archivos"]["name"][$contador]."\"".salto);}}?>
- En primer lugar, se determina el número de elementos que componen la matriz de ficheros enviados al servidor.
- Nosotros sabemos que son cuatro elementos, ya que en el formulario hay cuatro campos de archivo con el nombre de esa matriz.
- Cuando se envían múltiples archivos al servidor usando el sistema de matriz, ésta se crea, siempre, con tantos elementos como campos contiene el formulario, con independencia de que el usuario haya seleccionado un archivo para todos campos, para algunos o para ninguno.
- Fíjese en la linea que cuenta los elementos de la matriz, reproducida a continuación.
$totalDeArchivos=count($_FILES["archivos"]["tmp_name"]);
- En este caso la matriz $_FILES tiene tres índices.
- El primero es el que corresponde al nombre de la matriz de campos, "archivos". Recuerde que así es como hemos llamado a los campos en el formulario.
- El segundo índice corresponde a las propiedades de cada uno de los elementos de la matriz "archivos".
- El tercer índice es el número de elementos de la matriz "archivos" al que queremos referirnos.
- Para efectuar la cuenta de elementos de la matriz "archivos" hemos usado la propiedad tmp_name, pero podríamos haber usado cualquier otra. Esto no cambiaría el resultado.
- A continuación, fíjese en que entramos en un bucle que itera tantas veces como elementos tenga la matriz "archivos".
- En este caso son cuatro iteraciones.
- Dentro del bucle vamos a determinar el valor de la propiedad name de cada uno de los elementos, es decir, de cada uno de los archivos enviados al servidor.
- Si en alguno de los campos el usuario no ha seleccionado un archivo, esta propiedad no tendrá contenido. Para realizar esto, empleamos una condicional así:
if ($_FILES["archivos"]["name"][$contador]==""){
- Ahora cargue el código de formulario, y deje dos campos vacíos y vea como el código d PHP no muestra nada en esos campos.
Hasta la Próxima
Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto
0 comentarios:
Publicar un comentario