AOWS

Just another adrian’s weblog

Cómo almacenar imágenes en MySQL

with 2 comments

Poco a poco y según el tiempo me lo permita intentaré ir vaciando la larga lista de borradores que tengo pendiente. Para empezar veremos cómo almacenar imágenes directamente en MySQL, un método que como habíamos visto tenía sus ventajas e inconvenientes.

Comenzamos pues con el código correspondiente al formulario desde el que enviaremos el archivo (podemos tenerlo ya en el servidor, lo cual sería todavía más sencillo). Para permitir el envío de ficheros desde un formulario:

[html]

Archivo:

[/html]

Los datos serán almacenados en una tabla que tendrá un campo de tipo longblob (para datos binarios):

[sql]
CREATE TABLE tabla (
`id` int(11) unsigned NOT NULL auto_increment,
`archivo` varchar(255) NOT NULL default ”,
`mime` varchar(255) NOT NULL default ”,
`contenido` longblob NOT NULL,
PRIMARY KEY ( `id` )
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[/sql]

El resto de los campos servirá para almacenar información sobre el archivo (archivo para el nombre y mime para el tipo).

Finalmente, el archivo php que recuperará el fichero y lo almacenará en la base de datos:

[php]
$archivo = $_FILES[‘archivo’][‘name’];
$mime = $_FILES[‘archivo’][‘type’];
$tamano = $_FILES[‘archivo’][‘size’];

// guardamos en $tmp el contenido del fichero
$tmp = addslashes( file_get_contents( $_FILES[‘archivo’][‘tmp_name’] ) );

$consulta = “INSERT INTO tabla
(archivo, mime, contenido)
VALUES (‘$archivo’, ‘$mime’, ‘$tmp’);”;

mysql_query($consulta);
[/php]

Un script sencillito y que nos puede ahorrar mucho trabajo a la hora de gestionar los archivos, siendo mucho más sencillo hacerlo sobre una base de datos que sobre el sistema de ficheros.

Written by adrian

9 octubre, 2007 a 18:00

Publicado en Posts

Tagged with , , ,

2 comentarios

Subscribe to comments with RSS.

  1. Hola buenas,
    he probado tu metodo para subir ficheros pdf, a una base de datos, y aunque el fichero ocupa 45.9 kb, medice que unicamente ocupa 18 byte en la base de datos.
    Despues al querer descargarlo, me dice que el fichero no comienza por %PDF–
    ¿Sabes por que podria estar pasando?
    Si subo el fichero con phpmyadmin, funciona la descraga y todo correctament, pero lo que parece ser es que la variable $tmp, no recoge correctamente el contenido del fichero.

    wottan

    22 octubre, 2007 at 23:40

  2. hola mi hermano como estas… mira estoy realizando un sistema utilizando core java. y no he encontrado la forma de almacenar un foto en mysql . si me puedes ayudar…. que bueno:::

    luis

    25 septiembre, 2008 at 20:58


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: