Exibir imagens que estão fora do contexto da aplicação tipo "c:\pasta\imagem.jpg"

estava dando uma olhada nos tópicos sobre exibir imagem que estão fora da aplicação… mas os resumos que fizeram… foi muito vago… uma vez que estou iniciando agora tratamento com arquivos…
o meu problema está simplesmente em exibir os arquivos que estão fora da aplicação… pois se coloco “na mão” o link da imagem, ela não abre nas makinas clientes… ou seja… o servlet não tá reinderizando a imagem antes de enviar… para o browser…
bom te add no msn… se poderem me dar uma ajuda ficarei muito grato

Você não deixou claro se está trabalhando com aplicação Desktop ou Web.

Se for Web, você tem que fazer o upload da imagem para seu servidor, seja em uma pasta ou em um banco de dados.

Se for aplicação Desktop, provavelmente você está errando o path da imagem.

desculpe amigo…
é uma aplicação web… o sistema está funcionando… só está pendente essa situação…
pois qdo passo o link tipo “c:\imagem\img.jpg” ele leva isso para o browser…
já vi propostas de soluções colocando em uma response… e tal… mas não sei como fazer…
queria uma luz!

também gostaria de saber

[quote=paulonicolau]desculpe amigo… mas não sei como fazer…
queria uma luz![/quote]
eis a luz então!!! estude ela q vc vai longe…


T+

não estou conseguiindo acessar o link…

dei uma olhada… na apostila… e não vi muita coisa objetiva…
na verdade eu até já resolvi o problema… mas não foi a melhor forma…
pois estou forçando a copia da imagem “manualmente”, ou seja… se a aplicação mudar de lugar dá pau!

[quote=paulonicolau]dei uma olhada… na apostila… e não vi muita coisa objetiva…
na verdade eu até já resolvi o problema… mas não foi a melhor forma…
pois estou forçando a copia da imagem “manualmente”, ou seja… se a aplicação mudar de lugar dá pau![/quote]

Oi, paulonicolau.

Poderia postar sua solução? Estou passando por um problema parecido.

Abraço.

olá amigo… fiz o seguinte:
ao clicar no link para exibir a imagem, chamo uma Action.
Nesta ection, eu chamo um metodo estático que faz a cópia do arquivo para um local dentro do servidor, uma pasta temporária.
Depois criei uma Thred que de 5 em 5 minutos exclui esses arquivos desta pasta temporária.

problema: para copiar para dentro do servidor, eu não consegui axar um método que me retornasse o local real do seridor, tipo
“c:\arquivos de programas\servidor\webapp\Aplicacao”
sendo assim estou especificando manualmente, claro em um arquivo de configuração, ou seja… se o servidor mudar de lugar… tem que alterar o caminho no arq de configuração
espero ter ajudado!
e se alguém tiver alguma melhoria… estarei aguardando!

[quote=paulonicolau]olá amigo… fiz o seguinte:
ao clicar no link para exibir a imagem, chamo uma Action.
Nesta ection, eu chamo um metodo estático que faz a cópia do arquivo para um local dentro do servidor, uma pasta temporária.
Depois criei uma Thred que de 5 em 5 minutos exclui esses arquivos desta pasta temporária.

problema: para copiar para dentro do servidor, eu não consegui axar um método que me retornasse o local real do seridor, tipo
“c:\arquivos de programas\servidor\webapp\Aplicacao”
sendo assim estou especificando manualmente, claro em um arquivo de configuração, ou seja… se o servidor mudar de lugar… tem que alterar o caminho no arq de configuração
espero ter ajudado!
e se alguém tiver alguma melhoria… estarei aguardando!

[/quote]
Bom Dia, não necessidade de realizar a copia para uma pasta temporaria.
O que voce precisa fazer é o seguinte:

  • obter referencia a um OutputStream, que no seu caso obtem pelo HttpServletResponse response.getOutputStream().
  • Montar um String com o path completo do arquivo.
  String fileName= "/fotos/pequena/foto.jpg"; // o path desta maneira funciona no windows e linux

Veja que na raiz do servidor deve haver a seguinte estrutura c:\fotos\pequena

  • Agora é so ler a imagem do disco e escrever no OutputStream
InputStream in = null;
try {
	in = new BufferedInputStream(new FileInputStream(new File(fileName)));
	IOUtils.copy(in, outDest);//escreve na saida do OutputStream.
} finally {
	if (in != null) {
		in.close();
	}
}
* Esse fonte pode ser acoplado em um Servlet, Action, etc.

Conteudo HTML.
exemplo:

<img src="MyServlet" />

No momento da renderizacao, o MyServlet será invocado e num passe de magica vai exibir a imagem. Neste exemplo o nome da imagem esta fixo, mas voce pode definir algum parametro para identificar a imagem.

<img src="MyServlet?img=foto.jpg" />

Espero ter ajudado.
flw