Subir multiples archivos o imágenes al servidor y guardarlas con PHP y MySQL


En este ejemplo podrán ver como subir multiples archivos o imágenes al servidor y guardarlas usando PHP y MySQL, esto es una característica que aveces se requiere en ciertos proyectos, sistemas de gestión de contenidos o simples galerías de imágenes.

En este ejemplo es una especie de continuación del ejemplo anterior sobre subir una imagen al servidor, usaremos la misma clase class.upload.php.

Como funciona

Muchos se preguntaran como guardar imágenes o archivos en la base de datos, hay 2 for,as de hacerlo, una es guardando físicamente los archivos en la base de datos usando el formato blob, pero esto es mas pesado para la base de datos y otro es guardar el archivo físico en el servidor y guardar una referencia (por ejemplo la ubicación) en la base de datos.

Formulario

El formulario con respecto a la version anterior tiene ciertas modificaciones, el nombre del campo se cambia y se agregan corchetes [] para definir un array, también se agrega el atributo multiple al campo y queda de la siguiente manera:

 

<form enctype="multipart/form-data" method="post" action="upload.php">
 <input name="image[]" required="" type="file" multiple />
 <br>
 <input type="submit" value="Upload">
 </form>

Subir imágenes o archivos

Para las imágenes o archivos usaremos un algoritmo para subir multiples imágenes o archivos con la clase class.upload.php que encontraremos en la documentación de la librería :

 $error = false;

$files = array();
foreach ($_FILES['image'] as $k => $l) {
 foreach ($l as $i => $v) {
 if (!array_key_exists($i, $files))
 $files[$i] = array();
 $files[$i][$k] = $v;
 }
}

foreach ($files as $file) {
 $handle = new Upload($file);
 if ($handle->uploaded) {
 $handle->Process("uploads/");
 if ($handle->processed) {
 // usamos la funcion insert_img de la libreria db.php
 insert_img("uploads/",$handle->file_dst_name);
 } else {
 $error = true;
 echo 'Error: ' . $handle->error;
 }
 } else {
 $error = true;
 echo 'Error: ' . $handle->error;
 }
 unset($handle);
}

Base de datos

Para almacenar las imágenes simplemente tenemos una tabla llamada image:

create table image(
	id int not null auto_increment primary key,
	folder varchar(255),
	src varchar(255),
	created_at datetime not null
);

En cuanto a la base de datos tenemos los siguientes campos:

  • Id: identificador de los archivos
  • Folder: La ubicación en la que se encuentra el archivo.
  • Src: El nombre del archivo
  • Created_At: La fecha de creación

Contenido del paquete

El paquete de descarga cuenta con 8 archivos:

  • schema.sql : El código de la base de datos.
  • class.upload.php : Clase para subir imágenes/archivos, recortar, etc.
  • db.php : La conexión a la base de datos y las funciones de agregar, mostrar y eliminar.
  • form.php : El formulario para seleccionar las imágenes o archivos.
  • upload.php : El algoritmo para subir imágenes or archivos y agregar a la base de datos.
  • download.php: Algoritmo para descargar el archivo desde el servidor.
  • images.php : Muestra las imágenes que hemos subido al servidor y que están “guardadas” en la base de datos.
  • files.php: Muestra los archivos que hemos subido y que están “guardados” en la base de datos en formato de tabla
  • delete.php: Eliminar imágenes o archivos.

Descarga

A continuación te dejo un enlace para que puedas descargar los archivos de código.

[sociallocker]

Descargar: multi_upload_php_mysql

[/sociallocker]

Conclusion

Ya puedes empezar a implementar la aplicación para lo que tu quieras.

Te invito a que me comentes que te pareció este ejemplo, si te gustaría que publicara mas.

 


Leave a comment

10 thoughts on “Subir multiples archivos o imágenes al servidor y guardarlas con PHP y MySQL