Servlet para realizar Download

2 respostas
A

Galera, fiz um servlet para realizar downloads dos arquivos. O troço parece que funciona direito, o arquivo vem com o tamanho certo e tudo, mas vem corrompido!! Vou deixar o código aqui e caso alguém saiba o problema posta aí!!!

File file = getFile(request);
		ServletOutputStream outputStream = response.getOutputStream();
		ServletContext context = getServletContext();
		String mimetype = getMimeType(file.getName());		
		response.setContentType( (mimetype != null) ? mimetype : "application/octet-stream" );
		//talvez role exception aqui...
		response.setContentLength((int)file.length());
		response.setHeader( "Content-Disposition", "attachment; filename=\"" + file.getName() + "\"" );
		FileInputStream is = new FileInputStream(file);
		int c = 0;
		byte[] buffer = new byte[4096];
		while((c=is.read())!=-1){
			outputStream.write(buffer,0,c);
		}
		is.close();
		outputStream.flush();
		outputStream.close();

Valeu!!

Alberto

2 Respostas

T

Troque

int c = 0;  
 byte[] buffer = new byte[4096];  
 while((c=is.read())!=-1){  
     outputStream.write(buffer,0,c);  
 }  
 is.close();

por

int c;
byte[] buffer = new byte[16384];
while ((c = is.read (buffer, 0, buffer.length)) > 0) {
    outputStream.write (buffer, 0, c);
}
is.close();
A

Valeu Thingol. Agora eu tava em dúvida pq o buffer já era maior que o tamanho do arquivo… e por isso não estava me preocupando com o tamanho dele. Valeu d+

Alberto

Criado 18 de maio de 2009
Ultima resposta 19 de mai. de 2009
Respostas 2
Participantes 2