-2

Gravando Arquivos Binários no PostgreSQL

criado por Eduardo Lundgren (braeker) em 21/08/2005 8:31pm
Como visuazar a imagem ou arquivo?

O código comentado segue abaixo.

<?php
// Conectando ao Banco de Dados
$conexao = pg_connect("host=localhost port=5432 user=postgres dbname=teste");

// Pegando informações sobre a imagem que foi salva no banco
// Esta consulta não retornará o dado binário da imagem 
// juntamente com outras informações da tabela, mas sim 
// a referencia (o identificador) do objeto. Imagine que 
// o código da imagem na tabela seja 7.
$consulta = pg_query($conexao,"SELECT * FROM arquivo where codigo=7");
$resultado = pg_fetch_array($consulta);

// Seta o identificador do objeto que veio do campo foto no banco.
$identificador = $resultado["foto_oid"];

// Iniciando Transação para carregar o arquivo
pg_query($conexao, "BEGIN");

// Abrindo o objeto no modo leitura "r" passando como 
// parâmetro o OID, ou seja, o identificador do objeto.
$objeto = pg_lo_open($conexao,$identificador,"r");

// Setando Cabeçalho do browser para interpretar que o 
// binário que será carregado é de uma foto do tipo JPEG.
header("Content-Type: image/jpeg");

// Lendo binário da foto passando como referencia a 
// conexão com o objeto ($objeto).
pg_lo_read_all($objeto);

// Fechando Objeto que foi aberto para leitura
pg_lo_close($objeto);

// Finalizando Transação
pg_query($conexao, "COMMIT");
?>

Comentários:

Mostrando 1 - 5 de 5 comentários
E outra coisa, a cópia do arquivo ta rolando
no entando na hora de visualizar a imagem está aparecendo bugada.

O que pode ser ?

see ya !
05/06/2006 8:09am (~16 anos atrás)

Olá cara ! mto bom seu artigo !

Tipo, esse "$objeto" que você está fechando, onde você esta instanciando ele ?

see ya
05/06/2006 8:08am (~16 anos atrás)

Rui disse:
Poderia ainda utilizar o access do apache pra garantir segurança.
02/09/2005 1:09pm (~17 anos atrás)

Rui disse:
Guardar imagens realmente seria uma atitude ruim. BLOB CLOB costumam armazenar documentos do tipo "Microsoft Office" (word,powerpoint...)

Agora se o caso for guardar imagens, mais prático seria utilizar o banco para armazenar as pastas de cada usuário(não o conteúdo e sim o nome do folder) e utilizar o php para buscar e exibir as imagens desse folder.
02/09/2005 1:08pm (~17 anos atrás)

é incrivel a facilidade de 'jogar' a imagem para o banco !!

porém utilizar essa estratégia para sites de fotos por exemplo é inviável ! será um puta de um processamento para visulizar essas fotos!

o servidor com certeza nao aguentara...outro problema é que o proprio banco fica pesado!

tive oportunidade de trabalhar num site desse estilo e tinhamos Gigabytes de imagem (em disco), eram milhares de albuns e fotos! imagine essas imagens todas em BD!

apenas em poucos casos é interessante guardar imagens no banco!

e outra, o servidor Linux com Apache tem muitos recursos de segurança que 'garatem' o acesso restrito a tais imagens em disco!

;)
29/08/2005 7:03pm (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)