Postgresql na nuvem

21/11/2017

0

Boa Tarde, gostaria de saber qual a melhor opção para usar imagens no Postgresql. Se é trabalhar com tipo oid ( lo ) ou com o campo bytea.
Fiz o teste com o campo oid e consegui fazer a inserção. Já com o campo bytea ao rodar essa query abaixo, tive erro:

INSERT INTO imagem_binaria values ('fornecedor', pg_read_binary_file('\\\\fornecedor.png')::bytea);

O erro foi o seguinte:

ERROR: absolute path not allowed
SQL state: 42501

Parece falta de permissão, mas estou logada com o usuário Postgres e o arquivo fornecedor.png está dentro do diretório "data".

Talvez também aja outra forma de inserir.

Grata!!!
Wanessa

Wanessa

Responder

Post mais votado

18/12/2017

Olá Wanessa,

Não é uma boa prática nem é recomendado você armazenar imagens dentro do banco de dados, pois pode fazer o seu banco de dados perder performance e também aumentar o seu tamanho muito rápido.

O que é recomendado e o que a a maioria dos desenvolvedores experientes fazem inclusive eu, é armazenar somente o nome da imagem no banco de dados. Mas a imagens em si, você a salvará ou deixará dentro de uma pasta do seu projeto(pasta imagens por exemplo).

Quando você exibir essa imagem, você terá que recuperar o nome dela do banco de dados e concatenar com o nome da pasta onde a imagem em si está armazenada. Então, supondo que, no seu projeto, as imagens fiquem armazenada dentro de uma pasta chamada imagens, você poderia fazer:

$img = ...recupera o nome da imagem da tabela do banco de dados...
echo "<img src='imagens/$img' />";

Para exibir uma imagem dinamicamente...

Valeu!

Rander Freitas

Rander Freitas
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar