> Faqs > Introducir una imagen en un campo con MySQL

Introducir una imagen en un campo con MySQL

Hola a todos. Tengo una duda que debe ser muy fácil de resolver, porque después de "bucear" en las Faqs, articulos y manuales de DesarrolloWeb, no he encontrado nada en relación con mi duda.

Utilizo phpMyAdmin 2.7.0, y quiero almacenar en un campo de la base de datos una imagen y no se como hacerlo, empezando porque no sé el tipo de dato que le tengo que asignar al campo.

Gracias anticipadas por vuestra ayuda

Respuestas

Esta es una pregunta típica... La respuesta es sencilla: Las imágenes no se suelen guardar en la base de datos.

En realidad en las aplicaciones web lo que haces es:

  • Almacenar el archivo de la imagen en el espacio de disco del servidor
  • Almacenar la ruta donde se encuentra la imagen en la base de datos

Es la manera más óptima de proceder, ya que estás usando cada cosa para lo que se supone que es mejor. Las bases de datos están más pensadas para almacenar textos, fechas, números y cosas de este estilo. El sistema de archivos del servidor es adecuado para almacenar archivos.

Ahora bien, independientemente de esta recomendación, en los sistemas gestores de bases de datos generalmente existe una manera de trabajar con binarios. Eso depende de cada motor de base de datos. Y otra opción es almacenar la imagen en formato BASE64, lo que la transforma a texto antes de gudardarla. En ambas situaciones la imagen ocupará mucho y saturará tu base de datos rápidamente si es que tienes muchas imágenes que almacenar, por lo que no es una situación deseable.

Norberto
238 6 20 15

Puedes hacerlo pero no te lo aconsejo porque ocupa demasiado espacio.

Puedes almacenar imágenes u otro tipo de binarios poniendo un campo tipo blob.

$imangen=imagecreatefromgif("iamge.gif"); 
ob_start(); 
@imagegif($imagen); 
$jpg=ob_get_contents(); 
ob_end_clean(); 

...o algo asi.

O puedes guardar el path de tu imagen utilizando para esto un campo tipo varchar(30), dependiendo de la longitud del path que tengas.