Blog de Gonzalo

IMAGEN EN BASE DE DATOS

La mayoría de los sitios web tienen la opción de subir fotos por parte del usuario y hay dos opciones para hacerlo.
1ª Subir la imagen a un directorio, definido para guardar las imágenes, y guardar el nombre del fichero asociándolo al usuario. También se suele renombrar el fichero con algún patrón como el id del usuario, etc.
2ª Guardar el fichero en la base de datos, guardar el contenido binario, y luego recuperarlo.
La primera opción es la más común de todas. La segunda opción solo la he visto en un proyecto.
La ventaja que tiene la 2ª opción es que si se necesita migrar el sitio se migran las imágenes al migrar la base de datos, pero ésto también hace que la base de datos sea más pesada.
Los pasos a seguir para guardar una imagen en la base de datos, y luego recuperarla, son los siguientes.
1 - Crear en la tabla que vayamos a usar un campo de tipo blob para guardar el contenido de la imagen.
2 - Hacer lo siguente con el fichero que se quiere guardar en la base de datos:

$fp = fopen('imagen.jpg', "rb");
$tthumb = fread($fp, filesize('yo.jpg'));
$tthumb = addslashes($tthumb);
fclose($fp);
$query = "INSERT INTO autor(autor,libro,fichero) VALUES ('imagen','imagen','$tthumb' )";

3-Para mostrar la imagen en la web hay que hacer lo siguiente:
$query = 'SELECT fichero FROM autor where autor = "imagen"';
$result = mysql_query($query, $bbdd);
header("Content-Type: jpg");
while ($row = mysql_fetch_assoc($result)) {
echo $row["fichero"];
}

Este es un ejemplo bastante sencillo. Simplemente para que se entendiese como se hace.

Compartir en twitter