Para poder alojar una imagen o archivo dentro de una Base de Datos, debemos definirle un tipo de dato especial para este formato, en el caso de PostgreSQL usamos el tipo de dato bytea. Para poder leer y almacenar una foto u archivo X, el trato en este campo no tiene ninguna dificultad, por que se trata como cualquier otro valor a la hora de hacer un INSERT o UPDATE. A continuación se muestra la receta ideal mediante un ejemplo con una tabla y los códigos necesarios en PHP.

Estructura de la tabla: El siguiente código SQL, muestra cual es el tipo de dato que debe tener una tabla que aloja imágenes, en este caso existe un campo llamado foto de tipo bytea.

CREATE TABLE tbl_usuarios
(
  id serial NOT NULL,
  nombre character varying(60) NOT NULL,
  apellido character varying(60) NOT NULL,
  foto bytea
)

Subir una imagen: El siguiente archivo llamado save.php, es el encargado de subir el archivo de una imagen a la base de datos.

$data = file_get_contents('1.jpg');
$image = pg_escape_bytea($data);
$conn = pg_connect("user=DB password=admin dbname=DB host=localhost");

pg_query($conn, "UPDATE usuarios SET foto = '{$image}' WHERE id = 1");
pg_close($conn);

Cargar una imagen: El siguiente archivo llamado display.php, es el encargado de buscar y mostrar la imagen alojada en la base de datos, el resultado de este archivo es el de convertirse una imagen, y es llamado desde el código HTML, por eso se modifica el header.

$conn  = pg_connect("user=DB password=admin dbname=DB host=localhost");
$query = pg_query($conn, "SELECT foto FROM usuarios WHERE id = 1");
$row   = pg_fetch_row($query);
$image = pg_unescape_bytea($row[0]);

header("Content-type: image/jpeg");
echo $image;

pg_close($conn);

Nota: Recordar de mantener el mismo formato que se guarda y el header al leer el archivo.

Mostrar una imagen: El siguiente archivo llamado foto.html, contiene los tags necesarios para mostrar la imagen, podemos observar que se llama al archivo anterior y esta definido en la propiedad que indica la ruta de la imagen.

<h1>Foto:</h1>
<img src="display.php"