você pode fazer assim:

no banco, crie uma tabela com um campo do tipo oid;

ex:. create table fotos ( nome varchar, imagem oid )

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

A saída do "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.

Ex. de implementação no PHP:

function insere_foto_no_banco ($HANDLE_CONEXAO, $IMAGEM, $NOME_DA_FOTO) {

    $OID = pg_locreate ( $HANDLE_CONEXAO );

    $HANDLE_BLOB = pg_loopen ( $HANDLE_CONEXAO, $OID, 'w' );

    pg_lowrite ( $HANDLE_BLOB, $IMAGEM );

    pg_loclose ( $HANDLE_BLOB );

    pg_exec ( $HANDLE_CONEXAO,

        "INSERT INTO fotos ( nome, imagem )

         VALUES ( '$NOME_DA_FOTO', $HANDLE_BLOB ) "

    );

}

OBS.: se você fizer no php (ou qualquer script web), a imagem será enviada via métodos POST ou GET, e portando você deve substituir os metacaracteres ("\" + qualquer coisa) antes de jogar na função.

OBS.: se seu cliente é um executável, estas funções estão disponíveis na biblioteca do postgresql (tem em DLL para windows e shared object para *nix/linux)


script tosco para mostrar foto em PHP:

foto.php
<?php
 header('Content-type: image/jpg');
$HndCon=pg_connect("host=seu_ip port=sua_porta dbname=sua_base user=seu_usuario");
 pg_exec($HndCon,"BEGIN");
 $HndRes=pg_exec($HndCon,"SELECT imagem  FROM fotos  WHERE nome='$nome'");
 $Linha=pg_fetch_array($HndRes,0);
 $Img=pg_loopen($HndCon,$Linha['imagem'],'r');
 pg_loreadall($Img);
 pg_exec($HndCon,"COMMIT");
 pg_close($HndCon);
?>

ex.: foto.php?nome=MINHA_FOTO.jpg

OBS.: a sintaxe do exemplo está horrível, mas dá pra ter uma idéia
OBS.: substitua os valores da linha pg_connect pela sua conexão (ip, porta, usuário, banco)
OBS.: a leitura de um blob SEMPRE deve estar em uma transação.

qualquer coisa avisa

Sds,
Daniel Loureiro

Sebastian SWC escreveu:
você pode criar em uma tabela um campo do tipo bytea.

pra mandar pra o banco, é só a tua aplicação fazer um "upload" no postgres...


^^ ...simples


Abraço

On 5/23/07, *Tony Yahoo* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:


    Pessoal,
    Boa tarde!

    Queria saber como eu posso grava imagem no banco postgresql. Mais
    tem q ser
    da maquina do cliente para o servidor, pois do servidor para o
    servidor eu
    consigo.


    Desde já saúdo a todos.


    Tony Flankle




    _______________________________________________________
    Yahoo! Mail - Sempre a melhor opção para você!
    Experimente já e veja as novidades.
    http://br.yahoo.com/mailbeta/tudonovo/


    _______________________________________________
    pgbr-geral mailing list
    pgbr-geral@listas.postgresql.org.br
    <mailto:pgbr-geral@listas.postgresql.org.br>
    https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




--
Atenciosamente,
Sebastian Selau Webber Colombo

Sl 67.1-2: "Ó Deus, tem misericórdia de nós e abençoa-nos! Trata-nos com bondade. Assim o mundo inteiro conhecerá a tua vontade, e a tua salvação será conhecida por todos os povos".
--------------------------
E-mail Seguro Vetorial.net

Mensagem classificada como NÃO-SPAM. Para classificar como SPAM,
encaminhe para [EMAIL PROTECTED]

Chave de Identificação: 26110,4654873c140191972919468


------------------------------------------------------------------------

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


--------------------------
E-mail Seguro Vetorial.net

Mensagem classificada como NÃO-SPAM. Para classificar como SPAM,
encaminhe para [EMAIL PROTECTED]

Chave de Identificação: 26110,4654873c140191972919468
begin:vcard
fn:Daniel Loureiro
n:Loureiro;Daniel
org:Terminal Maritimo Luiz Fogliatto S/A;Setor de TI
email;internet:[EMAIL PROTECTED]
tel;work:(53) 32341500 Ramal 166
version:2.1
end:vcard

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a