Ler arquivo local via Browser - Pago cx de cerveja

14 respostas
A

Pago uma caixa de cerveja pra quem me explicar como faço para exibir uma imagem de máquina local rodando o Tomcat.

Ex: http://localhost:8080/index.jsp

Codigo index.jsp

<html>
<body>

<img src= ??? />

</body>
</html>

LOCAL DA IMAGEM: /usr/painel/quadros/quadro.jpg
Navegador: Firefox
Sistema: Linux Fedora 13

Pra quem conseguir, está aí o lance.

14 Respostas

G

seguinte,

voce tem que colocar a imagem dentro de alguma pasta dentro web content no seu projeto.

e então no src da img vc vai colocar o diretorio em que está o arquivo .jpg

por exemplo, Crio no Web content uma pasta chamada images, e coloco dentro desta pasta o arquivo image.jpg.

então vou usar a tag:

<img src="images/image.jpg">

deve funcionar em qualquer navegador,

testei no proprio eclipse, IE8, IE9 Beta e Firefox.

qqr duvida estou ai

flww

A

Não quero dentro da pasta do projeto.

Quero FORA da pasta do projeto. Pois uma vez que o servidor der um start na aplicação, só será lido todos os arquivos JÁ existentes… se for adicionado novos arquivos a esta pasta, esses novos arquivos só serão vistos quando o servidor reiniciar.

Por isso quero fora do projeto… pois essa pasta de imagens será atualizada com novos arquivos constantemente.

G

Não testei, mas isso deve funcionar:

src="file:///usr/painel/quadros/quadro.jpg"
P

Com o arquivo dentro da pasta images no projeto também funciona.

Quando o servidor inicia, ele não carrega essas arquivo para a memória.

A cada requisição ele reenvia esses arquivos para o browser, então se o arquivo mudou
ele enviará o novo arquivo.

A unica coisa que fica em memória são suas classes, e arquivos de configuração, o que exigiria
um reinicio do servidor para identificar a alteração, outros arquivo não, nem suas jsps, htmls e afins…

O que pode acontecer é você ter problemas com cache. mas de qualquer forma ocorreria
isso.

Um abraço.
Henrique.

G

Fora do projeto voce pode passar na src o caminho completo do arquivo .jpg

ex:

<img src="C:\temp\image.jpg">

o ruim de fazer isto eh que voce vai passar um caminho completo da sua maquina junto com o codigo fonte, o que diminui a segurança do seu projeto/sistema.

A

Giovani_Fiori:
Fora do projeto voce pode passar na src o caminho completo do arquivo .jpg

ex:

<img src="C:\temp\image.jpg">

o ruim de fazer isto eh que voce vai passar um caminho completo da sua maquina junto com o codigo fonte, o que diminui a segurança do seu projeto/sistema.

OK. Experimente fazer isso então rodando uma aplicação web, como o Tomcat. NÃO FUNCIONA.

G

pois eh…n funcionou apenas no firefox…
mas funciona no IE por exemplo…

tenho que testar outros modos…

assim que conseguir volto aki…

B

Não esqueçam das regras de segurança.
O navegador não deixa o código da página acessar o conteúdo do computador.
O Flash também não consegue e Applets só se forem assinados.

G

Véio! esquece o que eu disse antes, viajei. :shock:
Pensei que você precisava mostrar um arquivo da máquina do cliente.

A solução para o seu caso é a do Servlet, no post acima.

P

Pessoal,

Vocês estão complicando uma coisa que não tem complicação. rrsrr.

As imagens dentro do seu projeto vai funcionar normalmente para o que você está querendo…

A não ser que você queira compartilha as mesmas imagens entre várias aplicações, como
se fosse um repositório de imagens.

Nesse caso, você precisa navegar nos diretório para traz, a partir da raiz da sua aplicação, e depois
para frente até o diretório em que ficará o repositório de imagens.

Exemplo: src="…/…/…/seudiretório/seurepositório/suaimagem.jpg"

Simples assim.

um abraço.
Henrique.

F

Voce pode utilizar um servlet que escreve a imagen
ai no SRC da sua tag image voce passa a url chamando o servlet.
O servlet recebe a requisição, encontra o file onde ele estiver no servidor e buferiza os bytes na response.

Simples.

VAI UM CODE PRA AJUDAR.

ServletContext sc = getServletContext(); String mimeType = sc.getMimeType(arquivo); response.setContentType(mimeType);

try
     {
        FileInputStream in = new FileInputStream(arquivo);
    	OutputStream out = response.getOutputStream();	
        	
        	
        byte[] buf = new byte[1024];
		int cont = 0;
		while ((cont = in.read(buf)) >= 0)
		{
			out.write(buf, 0, cont);
			response.flushBuffer();
		}

		in.close();
		out.close();
	}
	catch (IOException e)
	{
		sc.log("Erro de I/O", e);
	}
R

Kra depois de muita luta eu consegui resolver esse enigma kkkkkkk

Crie uma página jsp com o código abaixo para poder ler o arquivo.

final String sFile = “/localDoArquivo/arquivo.jpg”;

response.setHeader("Cache-Control", "no-store");
response.setContentType("image/jpeg");
ServletOutputStream saida = response.getOutputStream();
InputStream imageIn = new FileInputStream(new File(sFile));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
BufferedImage image = decoder.decodeAsBufferedImage();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(saida);
encoder.encode(image);
out.close();

Na página jsp q vc quer exibir a imagem vc chama a página com o codigo acima

Espero ter ajudado.

L

vc esta utilizando linux…

não esqueça de verificar os acessos de sua pasta onde ficará a imagem…

Att.,

W

Cuidado com isso:

Fará com que a máquina CLIENTE tenha essa imagem. Ela NÃO será obtida do servidor.

Sugestão, faça um servlet que submeta via response uma imagem que PODERÁ estar em QUALQUER pasta pois será obtida via File.
A requisição seria uma chamada a esse servlet.

Já fiz isso, mas não tenho mais o código.

De qualquer forma, as imagens poderão ficar no projeto sem problema.

Criado 24 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 14
Participantes 9