> Faqs > Subir imagenes a una base de datos PHP

Subir imagenes a una base de datos PHP

Dispongo de una base de datos, administrada con phpMyAdmin. Quisiera saber:

  1. cómo puedo almacenar en dicha base de datos una imagen
  2. cómo descargar la imagen almacenada. Gracias de antemano

Respuestas

En una base de datos puedes almacenar una imagen. Generalmente lo harías en un campo binario, ahí depende del gestor de base de datos que uses el tipo de campo que necesitarás. No te concreto más, porque realmente guardar el archivo de la imagen en binario no es la manera aconsejada de almacenar una imagen en la base de datos. Esto haría que la base de datos creciese innecesariamente, es mejor que el almacenamiento de archivos quede en el sistema de archivos del servidor.

Lo que se suele hacer en verdad es lo siguiente:

  • En tu tabla creas un campo de tipo "string" para guardar la imagen
  • En ese campo almacenas simplemente el nombre de archivo de la imagen, o la ruta donde está la imagen en el servidor

De modo que, si los usuarios envían una imagen y la quieres almacenar en la base de datos lo que haces es guardar la imagen como un archivo en el servidor. Una vez que la has guardado, tienes el nombre de archivo y/o carpeta donde la has dejado. Entonces en la base de datos lo que haces es guardar simplemente la cadena de la ruta de la imagen.

Para recuperarla es muy sencillo, porque simplemente tienes que usar la cadena de la ruta donde está la imagen, para meterla en una etiqueta <img> o hacer que esa imagen se envíe para descarga o lo que necesites. Es decir, ya depende de tu aplicación, con la ruta harás lo que necesites para usar la imagen que tienes en el disco del servidor.

Norberto
167 3 14 11

Siguiendo como tal, la pregunta que haces, la manera en la que puedes almacenar en BD la imagen es la siguiente:

Crearas una tabla aparte con el ID de tu usuario y ademas un campo de tipo Blob, los demás campos que deberás de crear, son a tu elección, pero deberas de guardar el nombre del archivo, extensión y tipo, y tipo de cabecera.

Recuerda que cuando envias a través de POST, una imagen es recibida de manera X, puedes consultarlo a través de FIREBUG, toda esa cadena es la que se va a guardar en el campo Blob de la BD. Para recuperarla, solo debes de consultar la BD y generar la cabecera para que puedas recuperarla.

Si bien es cierto que se puede colocar una imagen de manera binaria en las bases de datos no es una buena idea hacerlo.