Assunto: Exibição de imagens no IExplorer 7

5 respostas
K

Tá com um pó:

Tenho uma aplicação que faz o seguinte:

O Usuário digita dos dados de um produto, faz o upload da imagem do mesmo, essa imagem e gravada temporiamente em uma pasta no servidor, depois, e enviada para o BD junto com os dados do produto.

Pra fazer o upload, usei o tutorial do NetBeans Visual http://www.netbeans.org/kb/55/vwp-fileupload.html#06

Só que, no próprio tuto, tem a seguinte mensagem no final:

If you run the File Upload tutorial using Internet Explorer 7, the first load of the image works properly. The second load of the image updates the file name, file type, and file size, but does not update the image. If you reload the browser, the image displays correctly.

Mais ou menos é isso:
Se vc está executando este tutorial usando o IE7, o 1º upload que fizer de imagem funciona normalmente. Do segundo em diante, atualiza o nome do arquivo, o tipo de arquivo e o tamanho, mas não atualiza a imagem. Se vc der um reload no browser, a imagem será exibida corretamente.

Bom, já desenvolvi boa parte da aplicação e não tinha prestado atenção nisso, e como uso FireFox, não percebi o problema. Pergunto, será que alguma alma caridosa tem alguma idéia de como resolver isso?

Pra completar, usei a mesma idéia pra recuperar as imagens no BD e exibir no programa… logo, meu cliente tá puto![/i]

5 Respostas

K

Vixe galera!!!

Ninguém tem nem uma vaga idéia?

G

Deixa eu ver se eu entendi!

Você fa o upload da imagem pro servidor!
depois de fezer o upload vc tem a visualização da imagem! certo?
mas se vc tentar fazer outro upload em cima do arquivo já importado, na hora de visualizar esse arquivo, aparece o arquivo antigo?

Vc disse que grava a imagem no banco?

K

gregui

Vc entendeu certo…

Sim, mando a imagem prum banco, porém, ela passa por um arquivo temporário no servidor, e depois que ela é iserida no banco, apago a danada da pasta.

E exato, ocorrem as duas situações.

Na primeira vez que upo a imagem pro servidor, ela é exibida corretamente, da segunda em diante, o IE não atualiza a exibição, imagino que a imagem deve ficar em cache no Cliente… No firefox, funciona normal.

Na hora que estou consultando o banco, dá o mesmo problema, a primeira página de imagens é exibida corretamente, da segunda pra frente, não atualiza (novamente, apenas no IE, no Firefix é de boa)… E o processo é quase o mesmo, pego a imagem no banco, ponho num arquivo temporario e mando exibir.

Valeu

G

bom! então é cache de browser!
um vez tive esse problema! eu resolvi fazendo uma servlet que carrega o arquivo e envia, passando junto no header para o controle de cache!

response.setHeader(“Cache-Control”,"[color=“blue”]no-store[/color]");

response.setContentType(“image/jpeg”);

ServletOutputStream out = response.getOutputStream();

InputStream imageIn = new FileInputStream(

new File("[color=“red”]arquivo_temp.jpg[/color]"));

JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);

BufferedImage image = decoder.decodeAsBufferedImage();

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();
S

Colocar um nome de imagem aleatório ou um parâmetro na query string de valor aleatório devem resolver também. O valor pode ser a data atual em ms.

Pelo que sei, IE e Opera (testou?) fazem cache de URL, Fx não.

Criado 8 de setembro de 2007
Ultima resposta 14 de set. de 2007
Respostas 5
Participantes 3