Ler/Gravar imagem no filesystem ou no banco?

9 respostas
luciano_castilho

Pessoal,

Considerando um sistema Web do tipo álbum de fotos (mostrar várias imagens nas páginas.jsp), implementado em (Java/Servlet/Jsp) utilizando o servidor Tomcat e o bd Firebird.
Qual seria a melhor alternativa para ler/gravar essas imagens? Ler e Salvar as imagens no filesystem ou no banco? Porque?
Alguém teria algum trecho de código exemplo para cada um desses casos?

Mui Grato.

9 Respostas

C

Luciano,

Em um projeto recente na empresa para armazenar fotos (cada uma,
com aprox. 2 megabytes, volume de fotos > 2000 mil) preferi armazenar as fotos no banco de dados.
Estou utilizando o firebird, que tem um excelente suporte a campos BLOB.

No meu caso, preferi criar um novo “banco” dimensionado exclusivamente
para as fotos. Neste caso fiz um pequeno tunning, aumentando o page-size para 16k.

Estou muito satisfeito com a performance. A manutencao é zero.

At.

Marcelo

“luciano_castilho”:
Pessoal,

Considerando um sistema Web do tipo álbum de fotos (mostrar várias imagens nas páginas.jsp), implementado em (Java/Servlet/Jsp) utilizando o servidor Tomcat e o bd Firebird.
Qual seria a melhor alternativa para ler/gravar essas imagens? Ler e Salvar as imagens no filesystem ou no banco? Porque?
Alguém teria algum trecho de código exemplo para cada um desses casos?

Mui Grato.

danieldestro

Filesystem, com certeza!

_fs

Com o sqlserver o tratamento de campos Imagem é um pouco diferente. Para adiantar alguma coisa, ele não guarda aqueles quilos de bytes nos campos.

É bem rapido, mas nao sei se outros bancos implementam isso desta forma.

luciano_castilho

Obrigado pelas opniões, porém ainda estou em dúvida.
Por exemplo, como fazer para uma página jsp exibir a imagem que esta armazenada no banco de dados, se no html deve-se indicar a imagem no formato:

<img src="imagens/nome_imagem.jpg">

Existe alguma tag para fazer esse trabalho? Ou um resultSet.getBlob() resolveria?

_fs

hehe mais ou menos isso cara. Na verdade você faz uma página como content-type img/jpg e lá você executa o servlet que pegará os bytes. Já que o content-type é imagem, aqueles bytes todos tornar-se-ão uma :smiley:

Ai na página onde você quer mostrar a imagem

Barbada né? :smiley:

caiofilipini

“LIPE”:
Ai na página onde você quer mostrar a imagem

Lipe, faltou vc colocar isso dentro das tags de code… :lol:

<img src="http://localhost:8080/Meuservletdeimagem">

[]'s

Jair_Rillo_Junior

experiência própria com sistema assim.

Comecei a uns 3 anos atrás um sistema armazenando as imagens no banco de dados. Era o Interbase 6 na época. No começo ficou maravilha, mas a quantidade de imagens crescia absurdamente diariamente, até que chegou a um ponto que as consultas ficavam muito lentas, até mesmo se no Select eu não trouxesse o campo de Imagem (não sei se isso tem algo haver).
Resumindo, precisei gravar tudo no filesystem, e depois disso, já faz uns 2 anos que não tenho mais dor de cabeça com esse sistema, e funciona legal.

luciano_castilho

Pergunta: vou ter que usar uma servlet só para imagens e no JSP dentro das tags img chamar essa servlet passando-lhe parametros? ex:

<img src="http://localhost:8080/Meuservletdeimagem?cod=01"> <img src="http://localhost:8080/Meuservletdeimagem?cod=02"> <img src="http://localhost:8080/Meuservletdeimagem?cod=etc">

Ou existe alguma outra forma, por exemplo um objeto do tipo blog ou imagem que dê para passar via request ao JSP e então recuperar seu valor (imagem)?
por ex:

<html> <body> <img src="<%= objImagem.show() %>"> </body> </html>
danieldestro

USE ESTA FORMA:

“luciano_castilho”:
Pergunta: vou ter que usar uma servlet só para imagens e no JSP dentro das tags img chamar essa servlet passando-lhe parametros? ex:

<img src="http://localhost:8080/Meuservletdeimagem?cod=01"> <img src="http://localhost:8080/Meuservletdeimagem?cod=02"> <img src="http://localhost:8080/Meuservletdeimagem?cod=etc">

Dá uma olhada aqui, para como fazer: http://www.guj.com.br/user.article.get.chain?article.id=138&page=1

Na página 5 fala como fazer com Servlets.

Criado 4 de maio de 2004
Ultima resposta 5 de mai. de 2004
Respostas 9
Participantes 6