¿Cómo subir múltiples imágenes al servidor?

Necesito ingresar desde un input file múltiples imágenes, que este haga una copia a una carpeta del servidor, y también que copie la nueva dirección de las imágenes a un campo de una base de datos.
Intente con jquerys..
Pero se me complica.. Y no encontré ninguna referencia clara..
Ojala puedan ayudarme...

1 Respuesta

Respuesta
1
Te voy a explicar como hacerlo de la forma fácil (sin JQuery)
Lo primero que tienes que hacer es en el formulario poner tantos input type file como quieras. Ten en cuenta que los servidores suelen tener un limite de datos enviados que varia según el servidor, por defecto son 8 Megas.
El <form> debe ser por post y estar encriptado y a esos inputs les vas a poner el mismo name con corchetes detrás. Ejemplo:
<form action="path/del/script/para/guardar/imagenes/" method="POST" enctype="multipart/form-data">
<input type="file" name="imagen[]"><br>
<input type="file" name="imagen[]"><br>
<input type="file" name="imagen[]"><br>
<input type="submit" value="enviar">
</form>
¿Por qué los corchetes? En php si pones corchetes en un name de un form lo convierte a array cuando lo recoges.
Ok, formulario terminado.
Cuando apretes "enviar" se subirán los archivos a la carpeta temporal del servidor.
Y se te guardará toda la información de los archivos en un array.
Ahora tienes que mover los archivos a la carpeta que quieras.
El array se llama $_FILES["imagen"] (porque he puesto de name imagen[] a los input file)
y con un simple foreach los puedes recorrer:
(yo suelo recorrer el error porque asi te dice si se ha subido bien o mal)
foreach ($_FILES["imagen"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) { //se ha subido bien
//Cojemos los nombres del fichero
$nombre_fichero=$_FILES["imagen"]["name"][$key];
$nombre_temporal_que_le_ha_dado_php=$_FILES["imagen"]["tmp_name"][$key];
//lo movemos donde queramos
move_uploaded_file($nombre_temporal_que_le_ha_dado_php,"ruta/donde/quieres/dejar/las/imagenes/".$nombre_fichero);
//es aconsejable ponerle permisos
chmod(ruta/donde/quieres/dejar/las/imagenes/".$nombre_fichero,0777);
}//fin del if
else{
echo $_FILES["imagen"]["name"][$key]." se subió mal";
}
}//fin del foreach
Y ya las tenemos subidas.
Para guardarlo en la base de datos en $nombre_fichero tienes el nombre del fichero, solo faltaría hacer una sql para que guardara ese nombre en la base de datos (hazla después del move_uploaded_file)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas