2010-05-18 16 views
6

¿hay alguna manera de insertar imágenes (no url, la imagen) en una tabla MYSQL hecha con phpmyadmin? y si hay cuando quiero obtener esa imagen e insertarla en la página, ¿qué debo hacer? :)¿Puedo insertar una imagen en una tabla MYSQL DB?

+1

utilización tipo BLOB, se inserta la imagen como 0 y 1. – Karthik

+1

y asegúrese de guardar (y responda) con los tipos de mime apropiados correspondientes a esos 0 y 1 ... – aioobe

Respuesta

7

Es posible (usando el tipo BLOB) pero casi siempre es mejor simplemente almacenar la imagen en el sistema de archivos y simplemente almacenar la ruta a la imagen en la base de datos.

Algunas razones por la parte superior de mi cabeza:

  1. BLOB se globo del tamaño de su base de datos, hacer copias de seguridad y restaura potencialmente más difícil (aunque algunos podrían argumentar que hace que sea más fácil ya que solo tiene que hacer una copia de seguridad de la base de datos en lugar de la base de datos más un montón de archivos).

  2. Almacenar los datos como BLOB podría causar problemas de rendimiento si tiene un código perezoso que usa select *.

  3. Servir las imágenes del sistema de archivos será más rápido que servirlas desde la base de datos, y reducir la carga en el servidor de db.

  4. Obtiene cierta flexibilidad con el lugar donde sirve las imágenes; por ejemplo, si desea moverlas a una CDN en el futuro.

0

Si va a buscar el menudo la imagen, probablemente sería mejor almacenarla como un archivo y guardar la ruta de acceso a la misma, para ahorrarle una carrera en la base de datos de ir a buscar la imagen.

De lo contrario, almacene el contenido del archivo de imagen en una columna BLOB y luego imprima <img src="image.php?id=1234" /> en el HTML.

image.php debe buscar la imagen con ID 1234 en la base de datos, buscar el contenido de esa columna BLOB e imprimirla después de publicar el encabezado HTTP correcto, p. header('Content-type: image/gif');

Pero en serio. Solo guarde el archivo de imagen. Es mucho menos doloroso, lo prometo.

0

Cuando se trata de recursos estáticos como imágenes de fondo o iconos de menú, etc., nunca he visto a nadie almacenarlos en la base de datos. Para el contenido dinámico, como las imágenes cargadas por el usuario, no es poco común.

Aquí hay algunos pro y contras para almacenar imágenes en la base de datos.

Beneficios:

  • Es técnicamente no es diferente de otros datos. Solo más, y en formato binario.
  • Se realiza una copia de seguridad de las imágenes junto con el resto de la base de datos.
  • n dolor principal de conseguir fuera de sincronización (que tiene un recorrido en la base de datos que apunta a una imagen inexistente, o imágenes sin referencias en la base de datos)

Inconvenientes:

  • Almacenamiento los archivos individuales son precisamente a lo que se dirige el sistema de archivos, por lo que lo más probable es que escale mejor.
  • Más fácil de depurar/ver manualmente las imágenes
  • El servidor web puede servir las imágenes directamente (sin necesidad de código adicional para cargar contenido de la base de datos y servir el tipo de mime adecuado, etc.).

Personalmente, siempre he encontrado que los beneficios superan los inconvenientes y siempre tenían las imágenes (junto con los tipos de mime) en la base de datos. Nunca he notado inconvenientes o problemas de rendimiento pero, por otro lado, nunca he trabajado en sitios web realmente grandes.

preguntas y recursos relacionados:

Cuestiones relacionadas