Así como
$_POST y
$_GET son arrays asociativos los cuales pueden contener N datos organizados por los nombres de los campos a los que los valores contenidos pertenecían, con
$_FILES también tienes un array asociativo de una cantidad N de archivos que haya cargado el usuario en el input.
Ya que se trata de un array, la inserción de los datos la puedes hacer utilizando un bucle.
Código HTML:
Ver original<form action = "ejemplo.php" method = "post" enctype = "multipart/form-data"> Selecciona:
<input type = "file" multiple = "multiple" name = "fotos[]" /> <input type = "submit" value = "Subir" />
Código PHP:
Ver originalforeach ($_FILES["fotos"]["name"] as $clave => $valor) {
$nombre = $_FILES["fotos"]["name"][$clave];
$tmp = $_FILES["fotos"]["tmp_name"][$clave];
$ruta = "../imagenes/";
//Guardo la imagen en el servidor
//Guardo el nombre de la imagen en la BD
mysqli_query($conexion, "INSERT INTO tabla (imagen) VALUES ('$nombre')"); }
Itero en base al array
name que se encuentro dentro del array
fotos y este dentro del array
$_FILES ya que su tamaño se corresponde con la cantidad de archivos subidos, aunque hubiera dado lo mismo si iterábamos sobre otro de los arrays de
fotos, tales como
type,
tmp_name,
error o
size.
Este es un ejemplo simple, sin embargo, sería mejor si restringieras la subida de determinados tipos de archivo, así como comprobar que no hubo un error en la subida de cada imagen y si ninguna de éstas existe ya en la BD y en el servidor. No olvides colocar los
[] en el nombre del input para que pueda ser tratado como un array de imágenes y así puedas iterar.
Saludos