Dúvida com setContentType usando imagens

3 respostas
gustavocsb

To com o seguinte problema:

Eu to usando um campo blob pra inserir imagens no banco. até ae tudo bem, a imagem é inserida numa boa.
Agora o problema é:
Quando quero mostrar essa imagen na jsp, eu utilizava response.setContentType(“image/jpeg”);
Porém, quando eu faço isso, todos os meus dados que nao sao imagens nao aparecem devido a esse comando.
Eu quero mostrar dados e a imagem juntos, todos vindos do banco.
O que eu faço?

Obrigado.

3 Respostas

T

Acho que você não entendeu como funciona HTML.
Se você tem uma página com uma figura:

&lt;html&gt;&lt;body&gt;<img src="teste.jpg">&lt;/body&gt;&lt;/html&gt;

o browser precisa fazer 2 conexões ao web server - uma para pegar a página html (que é texto), e a outra para pegar a figura. Você não pode mandar as duas coisas de uma vez só.
No seu caso, se a figura vem do banco de dados, você tem de ter um JSP que mostra a página html, e uma servlet ou JSP que manda a imagem e só a imagem. Acho que você está querendo mandar tudo de uma vez só, mas isso não pode ser feito.
A saída da página JSP tem de ser algo parecido com:

&lt;html&gt;&lt;body&gt;<img src="/aplicacao/minhaservletquemandaimagens.jsp?parametro=valor">&lt;/body&gt;&lt;/html&gt;

e a página JSP ou servlet que funciona para mandar imagens seria algo parecido com:

minhaservletquemandaimagens.jsp

response.setContentType (…)…

sergiotaborda

gustavocsb:
To com o seguinte problema:

Eu to usando um campo blob pra inserir imagens no banco. até ae tudo bem, a imagem é inserida numa boa.
Agora o problema é:
Quando quero mostrar essa imagen na jsp, eu utilizava response.setContentType(“image/jpeg”);
Porém, quando eu faço isso, todos os meus dados que nao sao imagens nao aparecem devido a esse comando.
Eu quero mostrar dados e a imagem juntos, todos vindos do banco.
O que eu faço?
.

O HTML é HTML e não inclui a informação binário da imagem.
quando vc usa a informação binária da imagem está no arquivo nomedaimagem.gif e não no arquivo HTML

Vc tem duas opções

  1. Interceptar as requisções de imagem usando um servlet ou um filtro com urlpattern igual Às extenções das imagens. O Servlet irá pesquisar o banco pela informação binária e lançar com o contentType correto.
  2. VC cria um servlet especial que recebe como parametro alguma informação que permita pesquisar no banco pela imagem ( um id ou um nome sei lá) ai vc pesquisa usando essas informação da mesma foram que em 1). A diferneça é que o seu será assim
    Onde “servletimagem.srv” é o nome mapeado para servlet criado
gustavocsb

Obrigado!

Funciona!

Criado 3 de setembro de 2007
Ultima resposta 3 de set. de 2007
Respostas 3
Participantes 3