Almacenar imagen en la base de datos MySQL
En este tutorial, nuestro objetivo es comprender cómo almacenar imágenes en una base de datos MySQL.
SQL estándar utiliza tipos de datos BLOB
(objeto binario grande) para almacenar grandes cantidades de datos.
Una secuencia de bytes u octetos define una cadena binaria, generalmente utilizada para almacenar imágenes grandes o archivos multimedia como datos de audio y video en la base de datos MySQL. El valor BLOB
es flexible para escribirlo como valores binarios o de cadena según el requisito.
Tratemos de entender cómo funciona esto.
Para empezar, creamos una tabla llamada student_details
con la columna stu_photograph
. Aquí, la fotografía de la imagen se almacenaría en la columna stu_photograph
.
-- Using the following table as an example:
CREATE TABLE stu_information(
stu_photograph BLOB
);
Ahora insertemos la fotografía del estudiante en la tabla con stu_photograph
actuando como la columna donde se debe colocar la imagen.
Nota: En la función LOAD_FILE
, ingresamos la ruta de la imagen que deseamos cargar en la base de datos MySQL. Esta función nos ayuda a almacenar una imagen en un BLOB
.
-- This will insert a file in a BLOB column.
INSERT INTO stu_information (stu_photograph) VALUES(LOAD_FILE('/image_path/image_fileName.png'));
El código anterior ingresaría los datos del estudiante en la tabla student_details
. Podemos visualizar esta tabla con el siguiente comando:
select * from stu_information;
El bloque de código mencionado anteriormente generaría la siguiente salida:
Como podemos ver arriba, la columna stu_photograph
ha sido creada con soporte de datos BLOB
para almacenar imágenes.
Nota: Antes de agregar una imagen a la columna stu_photograph
, asegúrese de agregar el privilegio de imagen en su usuario de MySQL.
Podemos otorgar el privilegio FILE
entrando en la raíz y ejecutando el siguiente comando:
GRANT FILE ON *.* TO 'mysql_user'@'localhost';