-2

Gravando Arquivos Binários no PostgreSQL

criado por Eduardo Lundgren (braeker) em 21/08/2005 8:31pm
Como deletar o objeto?

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 (oid) do objeto que veio do campo foto no banco.
$identificador = $resultado["foto_oid"];

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

// Quando você deletar o registro da tabela, se ela possuir 
// um campo oid o objeto relacionado a ela será apagado 
// simultaneamente, não precisando dar o pg_lo_unlink();

// Deletando registro da tabela
pg_query(“delete from arquivo where codigo=7”);

// Finalizando transação
pg_query($conexao, "COMMIT");

// Fechando o objeto
pg_lo_close($objeto);

// Fechando conexão
pg_close();
?>

Obs: Caso você deseje apagar diretamente o objeto use o pg_lo_unlink(), porém se torna desnecessário porque ao apagar o registro da tabela o objeto também é apagado.

// Deletando objeto. Passe como parâmetro a conexão e o identificador (oid) do objeto:

<?php
pg_lo_unlink ($conexao, $identificador);
?>

Este é o primeiro artigo da minha vida e tentei ser o mais claro possível. Espero que tenham gostado! Qualquer duvida, chingamento ou sugestão enviem um comentário abaixo!

Abraços,
Eduardo Lundgren

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.)