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