En este articulo vamos a realizar la inserción de una imagen en mysql a través de PHP, como también a recuperar la misma de la base de datos y mostrarla como una vista previa luego de la inserción.
Para realizar ésto, se debe crear una tabla la cual debe contener campos como: nombre del archivo, tipo de extensión de la imagen y la imagen como tal. Para almacenar este archivo primero la tabla deberá tener un campo que acepte este tipo de información, para ello existe un tipo de dato denominado BLOB, el cual permite almacenar una cantidad variable de datos como cadenas de caracteres binarios (Bytes).
Existen 4 tipos de datos BLOB (Binary Large Object) los cuales almacenan cadenas de caracteres binarios:
TINYBLOB: Objeto binario grande de longitud máxima de 255 (2^8 - 1) caracteres.
BLOB: Objeto binario grande de longitud máxima de 65535 (2^16 - 1) caracteres.
MEDIUMBLOB: Objeto binario grande de longitud máxima de 16777215 (2^24 - 1) caracteres.
LONGBLOB: Objeto binario grande de longitud máxima de 4294967295 (2^32 - 1) caracteres.
De los cuales se usa normalmente el tipo de dato
BLOB, y los otros de acuerdo a las especificaciones individuales.
Para este ejercicio se usa el tipo BLOB:
Nombre base de datos:
imagenes.
Nombre Tabla:
imagen.
Estructura de la tabla:
|
Tabla imagen |
La tabla
imagen contiene tres campos necesarios para el manejo de la imagen:
nombre: Campo que almacena el nombre o descripción de la imagen.
imagen: Campo que almacena la imagen en cadenas de caracteres binarios.
tipo: Campo que almacena la extensión o tipo de imagen. ejemplo (png, jpg, gif).
Primero se crea la página
con un formulario desde donde se cargará la imagen:
|
index.php |
Para enviar una imagen desde un formulario se agrega el atributo
enctype="multipart/form-data" el cual especifica como se deberían codificar los datos cuando se envíen al servidor (Linea 11).
El atributo
enctype solo puede ser usado si
method="POST".
multipart/form-data solo es requerido cuando se tiene un control de carga de archivos.
text/plain los espacios se reemplazan con el símbolo "+", pero los caracteres especiales no son codificados.
Se crea el archivo que contiene todo el código para gestionar la inserción de la imagen en la base de datos, llamado
cargarImagen.php:
|
cargarImagen.php |
Se crea el archivo que selecciona la imagen de la base de datos y la despliega:
|
mostrarImagen.php |
Por ultimo se incluye el archivo
cargarImagen.php en la página principal
index.php (Linea 16):
|
index.php |
Subiendo una imagen en la base de datos:
|
seleccionando imagen |
Imagen cargada:
Revisando la base de datos:
NOTA: el anterior ejemplo es educativo y solo pretende demostrar la utilidad que tiene el uso de los tipos de datos binarios, ya que es una mala practica usar este tipo de almacenamiento por términos de largo plazo reflejado en el rendimiento de la base de datos. Lo mejor para este tipo de casos es reservar una carpeta para el almacenamiento de las imágenes y solo guardar en la base de datos el path que lleva a la imagen directamente.