Manejo de dato blob
Autor: MySQL Hispano
1 . Creando la base de datos
2 . Agregando archivos a la base de datos
3 . Listando los archivos de la base de datos
4 . Descargando archivos de la base de datos
5 . Comentarios finales
Cedido por MySQL Hispano.
Sin duda alguna, una de las preguntas más frecuentes en relación a MySQL es, "¿Cómo puedo almacenar archivos en una basede datos?". La respuesta es, se tienen que usar los tipos de datos BLOB. Estos BLOBs (Binary Large Objects) pueden almacenar prácticamente cualquier tipo de datos, incluyendo documentos de MS Word, imagenes gif/jpeg, archivos PDF, MP3s, etc.
En este artículo vamos a mostrar como crear un repositorio de archivos binarios usando PHP y MySQL para poder almacenar diferentes tipos de archivos. Veremoscomo almacenar cada uno de los archivos en una base de datos, para posteriormente recuperarlos.
Para probar los ejemplos en este artículo, es necesario tener acceso a un servidor con soporte para PHP, además de contar con un servidor MySQL. Se asume que se cuentan con los privilegios apropiados para crear la base de datos, y que MySQL está corriendo en el mismo servidor que PHP.
Creando la basede datos
Nuestro repositorio de documentos usará una base de datos que contenga únicamente una tabla para almacenar dichos documentos.
[eduardo@casita]$ mysqladmin create repositorio
[eduardo@casita]$
[eduardo@casita]$ mysql repositorio
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQLconnection id is 139 to server version: 3.23.41
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE archivos(
-> id int not null auto_increment primary key,
-> nombre varchar(50),
-> titulo varchar(50),-> contenido mediumblob,
-> tipo varchar(50));
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on repositorio.* to bingo@localhost identified by 'holahola'
Query OK, 0 rows affected (0.46 sec)
Ahora tenemos una base de datos llamada repositorio, la cual contiene una tabla llamada archivos.
Losdetalles de cada campo en la tabla archivos se muestra a continuación:
* id - Un número entero que nos proporcionará un identificador único para cada archivo que iremos almacenando. Éste se irá incrementando automáticamente cada vez que se vaya agregando un nuevo registro.
* nombre - El nombre original del archivo, por ejemplo, foto.gif, curriculum.doc, etc
* titulo - Una brevedescripción de cada archivo que se irá guardando en la tabla, por ejemplo "Cartita para mi novia", o "La foto de mi perro". Este título será usado posteriormente al estar revisando los archivos de nuestro repositorio a través de una página web.
* contenido - Un campo de tipo binario (blob) para guardar el contenido de cada archivo. En nuestra tabla hemos usado un tipo mediumblob, el cuál puedealmacenar archivos hasta de 16MB.
* tipo - Como veremos más adelante, cada archivo (ya sea un .doc, .gif, .pdf, etc) tiene un tipo único. Cuando se envía un archivo hacía el servidor web a través de una página web, el navegador le envía al servidor la información acerca del tipo del archivo, o bien, del tipo de contenido del archivo. Los tipos de contenido son simples cadenas. El tipo de contenidopara un archivo MS Word es "application/msword", el tipo de contenido para una imagen GIF es "image/gif", etc.
Agregando archivos a la base de datos
Ahora que tenemos lista la base de datos que servirá como repositorio de nuestros archivos, vamos a crear un simple página web que permita seleccionar un archivo desde el navegador para posteriormente enviarlo a un script en PHP que se va a...
Regístrate para leer el documento completo.