Bom,
Fiz um teste aqui e com Large Objects(lo), não achei nenhuma forma de
exibir a imagem ou arquivo diretamente , sem precisar criar um
temporário do arquivo.*

Já trabalhando com o campo bytea, é possivel exibir a imagem/arquivo
sem necessidade de precisar criar um arquivo temporário.*

* ISSO EM PHP...

Abaixo segue o script que utilizei no teste:

Para gravar o arquivo no banco :

<?
include("config.php");
$conecta = pg_connect($PG_str);

$image = "/home/sites/ger_agencia/image/alerta_ok.gif";

$byte_foto = file_get_contents($image);
$byte_foto = pg_escape_bytea($byte_foto);

$sql = "INSERT INTO foto(foto_b) VALUES ({$byte_foto}');";
$rs  = pg_query($conecta,$sql);
?>

Para Ler o Banco :

<?
include("config.php");
$conecta = pg_connect($PG_str);

$sql = "SELECT foto_b FROM foto ORDER BY id_foto DESC LIMIT 1";
$rs = pg_query($sql);
$rg = pg_fetch_array($rs);

$img = pg_unescape_bytea($rg['foto_b']);

header('Content-type:image/gif;');
 // No caso está fixo, mas este deve ser ajustado ao tipo de arquivo
gravado no BD

print($img);
?>

Bem simples, mas funcionou legal aqui !
Creio que dessa forma possa functionar em qualquer linguagem, pois a
funcao pg_unescape_bytea e pg_escape_bytea simplesmente formatam
corretamente para inserir no bando e para saida "na tela".

Abaixo segue como elas funcionam :
UNESCAPE
$search = array(chr(92), chr(0), chr(39));
$replace = array('\\\134', '\\\000', '\\\047');
$binData = str_replace($search, $replace, $binData);
return $binData;

ESCAPE

$search = array('\\\134', '\\\000', '\\\047');
$replace = array(chr(92), chr(0), chr(39));
$binData = str_replace($search, $replace, $binData);
return $binData;

Att:
Thiago Risso

On 10/6/06, Alberto Ivo <[EMAIL PROTECTED]> wrote:
>
>
> On 10/6/06, Marcelo Angelo da Cunha Battistini
> <[EMAIL PROTECTED]> wrote:
> >
> >
> > Nunca usei JPS, eu acho que é que nem PHP.  e aproveitando você tem como
> me passar como configurar
> > o servidor para usar JSP e um programa como exemplo?
>
> Marcelo, por enquanto ainda não, pois estou aprendendo.. quando souber eu
> passo sim, com certeza..
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a