Gravando imagens no PostgreSQL

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (0)

Veja nesta dica como gravar imagens no PostgreSQL.


 

Crie uma tabela no banco com um campo oid

Ex:. CREATE TABLE tbImoveis_Fotos (idImovel int, foto oid )

No cliente, use as funções: "pg_locreate", "pg_lowrite", "pg_loclose" para criar um blob e escrever nele a foto como conteúdo.

O "pg_loopen" retorna a chave do BLOB que será usada pelo comando "INSERT". Se você der um SELECT na tabela "pg_largeobject", usando esta chave, você verá sua foto (binário) dividida
em páginas.

Um exemplo de utilização em PHP

function GravarImagemImovel ($HANDLE_CONN, $NOMEIMG, $IMG) {
    $OID = pg_locreate ( $HANDLE_CONN);
    $HANDLE_BLOB = pg_loopen ( $HANDLE_CONN, $OID, 'w' );
    pg_lowrite ( $HANDLE_BLOB, $IMG );
    pg_loclose ( $HANDLE_BLOB );
    pg_exec ( $HANDLE_CONN,
        "INSERT INTO tbImoveis_Fotos ( idImovel, Foto )
         VALUES ( '$NOMEIMG', $HANDLE_BLOB ) "
    );
}


Exemplo para mostrar a sua imagem:

<?php
 header('Content-type: image/jpg');
 $HndCon=pg_connect("host=192.168.0.1 port=5432 dbname=imob user=postgres");
 pg_exec($HndCon,"BEGIN");
 $HndRes=pg_exec($HndCon,"SELECT foto FROM tbImoveis_Fotos  WHERE IdImovel='$IdImovel'");
 $Linha=pg_fetch_array($HndRes,0);
 $Img=pg_loopen($HndCon,$Linha['foto'],'r');
 pg_loreadall($Img);
 pg_exec($HndCon,"COMMIT");
 pg_close($HndCon);
?>


Não esqueça que a leitura de um BLOB deve sempre estar dentro de uma transação!

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?