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!!!
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
Curtir tópico
+ 0
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!
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)