Download de arquivos com servlet

3 respostas
J

Estou tentando implementar o download de um arquivo .jar usando um servlet.

O meu método doGet está assim:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("application/jar");
		ServletContext ctx = getServletContext();
		InputStream is = ctx.getResourceAsStream("/jon.jar");
		
		int read = 0;
		byte[] bytes = new byte[1024];
		
		OutputStream os = response.getOutputStream();
		while((read = is.read(bytes)) != -1){
			os.write(bytes,0,read);
		}
		
		os.flush();
		os.close();
	}

Acontece que quando tento acessar este servlet, aparece a janela para download mas o arquivo que é baixado é Download.do (o nome que mapeei para o servlet) e não o .jar que eu coloquei.

O que estou fazendo de errado?

E qual o lugar certo de colocar o arquivo que quero disponibilizar para download? Estou colocando dentro de Web Content no Eclipse... Me ajudem por favor

3 Respostas

P

http://snippets.dzone.com/posts/show/4629

J

Obrigado pozzo… Esse código é basicamente o que eu estava fazendo mesmo…

Dessa vez consegui fazer funcionar mas, só com caminho absoluto…

Então meu problema se resume a: Qual o caminho que o servlet tá referenciando? Para poder fazer referência ao arquivo com um caminho relativo onde eu tenho que colocar o arquivo?

Dentro de WEB-INF?? Dentro do diretório do TomCat?

P

Você pode usar colocar um nivel antes do WEB-INF (http://java.sun.com/products/servlet/2.2/javadoc/javax/servlet/http/HttpServletRequest.html#getContextPath()).

Caso queira proteger os arquivos, dentro do WEB-INF. Mas ai vai acessar de uma forma diferente (se não me engado com http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String))

Criado 29 de setembro de 2009
Ultima resposta 29 de set. de 2009
Respostas 3
Participantes 2