Hay dos formas de guardar imágenes. La forma más común es guardar el nombre del archivo en la tabla MySQL y cargar la imagen en la carpeta.Otra forma es almacenar la imagen directamente en la base de datos. Como, los desarrolladores generalmente no usan el segundo método, pueden confundirse.

Utilizar MySQL para obtener información de bases de datos es, sin duda, una muy buena opción. A veces es más conveniente guardar la imagen o el archivo en la base de datos que en una carpeta separada. En este artículo, aprenderá cómo guardar la imagen o el archivo en la base de datos MySQL y cómo se mostrará la imagen de la base de datos con el ejemplo práctico.

Almacenar un archivo cargado en una base de datos es una parte más compleja que simplemente mover un archivo con move_uploaded_file. así que hoy comprobaremos si hay un archivo almacenado en la base de datos.La base de datos MySQL proporciona un tipo de datos especializado para guardar una gran cantidad de datos y ese tipo de datos es BLOB.

¿Qué es un BLOB?

El tipo de datos BLOB es un objeto binario de gran tamaño que puede contener una longitud variable de datos.Un BLOB se usa típicamente para almacenar datos binarios y tiene cuatro tipos:’

1. TINYBLOB
2. BLOB
3. MEDIUMBLOB
4. LONGBLOB

La principal diferencia entre todos los tipos es la longitud de los datos respectivos que se pueden guardar.

Para almacenar un archivo en la base de datos o en MySQL, Vamos a crear una tabla con el BLOB de tipo de datos donde el archivo se puede almacenar utilizando la siguiente instrucción.Como BLOB significa Objeto Grande Binario y es una versión segura para binarios del tipo de TEXTO que significa que los datos no son texto legible y no se interpretarán como texto legible, mientras que almacenan datos estrictamente binarios.

Aquí, estoy almacenando una imagen en la base de datos en lugar de mover el archivo de la ubicación temporal a un directorio final solo para que pueda leer su contenido e insertarlo en la base de datos.

NOTA: Las columnas BLOB distinguen entre mayúsculas y minúsculas si almacena datos en ellas y luego intenta buscarlas con una consulta MySQL.

Ejemplo:

Aquí está la Estructura de la tabla que tiene dos campos, el primero es el id primario de autoincremento y el segundo campo es Blob para guardar la imagen.

1
2
3
4
5
6

CREAR archivos de TABLA (
id INT AUTO_INCREMENT PRIMARY KEY,
file_data MEDIUMBLOB NO NULL
);

después, Usted necesita una interfaz web para la carga de una imagen. Para eso,Vamos a crear el formulario HTML que permite al usuario cargar un archivo que se desea almacenar en la base de datos

1
2
3
4
5
6

<form name=»archivo» action=»filedb.php» method=»post» enctype=»multipart/form-data»>
<input type=»file» name=»archivo» valor=»» />
<input type=»submit» name=»Subir» value=»Subir»>
</formulario>

Después de la forma, crear filedb.archivo php que muestra el código principal para almacenar el archivo en la base de datos. Aquí la función fread lee el contenido del archivo o de la imagen y guarda el contenido en la base de datos MySQL utilizando la consulta MySQL.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

// Este es el archivo que vamos a añadir en la base de datos
$MI_FICHERO = $_FILES;
// Para abrir el archivo y almacenar su contenido en $file_contents
$archivo = fopen($MI_FICHERO, ‘r’);
$file_contents = fread($archivo, filesize($MI_FICHERO));
fclose($archivo);
/* Tenemos que escapar de algo stcharacters que pueden aparecer en file_contents,por lo que ahora, antes de comenzar la consulta.*/
$file_contents = addslashes($file_contents);
// Para agregar el archivo en la base de datos
mysql_connect(‘localhost’, ‘root’, «) or die(«no se puede conectar a la base de datos.»);
mysql_select_db (‘test’) o die («No se puede seleccionar la base de datos.»);
mysql_query («INSERTAR EN archivos SET file_data=’fil file_contents'») o die («Error de consulta MySQL:». mysql_error() . «<br><br>». «El SQL fue: $SQL<br><br>»);
mysql_close();
echo «el Archivo INSERTADO en la tabla de archivos correctamente.»;

Deja una respuesta

Tu dirección de correo electrónico no será publicada.