JSF - Download de array de bytes em memória

1 resposta
R

estou tendo dificuldades para gerar um download direto de um array de bytes em memória, trata-se de um arquivo texto, estou utilizando a Mojarra (implementação da SUN de JSF ) e o RichFaces. Se alguem souber o que está errado por favor retorne. Seque o código que estou utilizando:

OBS: o browser até exibe o arquivo na tela mas não oferece a caixa para download :(.

FacesContext faces = FacesContext.getCurrentInstance();
				
				HttpServletResponse response = (HttpServletResponse)faces.
					getExternalContext().getResponse();
				
				byte[] modelo = parser.gerarEsqueletoFormatado();
				     
		        response.setHeader( "Content-Disposition", "attachment;filename=\"TESTE.CBL\"");   
				response.setContentLength(modelo.length);
				response.setContentType( "application/octet-stream");
				
				
				OutputStream out = response.getOutputStream();
							
				out.write(modelo);      
				out.flush();
				out.close();
				
				faces.responseComplete();

1 Resposta

R

Consegui resolver, tah ai a resposta pra quem precisar...

no trexo abaixo informa-se o nome do arquivo que aparecerá na caixa de download:
response.addHeader("Content-Disposition:", "attachment; filename=MODELO.CBL");

no trexo abaixo informa-se o tipo do stream a ser utilizado. Se, como no meu caso, não for um tipo MIME conhecido o browser oferecerá a janela de download:

response.setContentType("application/cbl");
o código inteiro para a execução do download ficou assim:
FacesContext faces = FacesContext.getCurrentInstance();
				
				HttpServletResponse response = (HttpServletResponse)faces.
					getExternalContext().getResponse();
				
				String modelo = parser.gerarEsqueletoFormatado();
				
				response.addHeader("Content-Disposition:", "attachment; filename=MODELO.CBL");
		        response.setContentType("application/cbl");
		        
				response.setContentLength(modelo.length());
				
				OutputStream out = response.getOutputStream();
				
				out.write(modelo.getBytes());
				
				faces.responseComplete();
Criado 14 de outubro de 2008
Ultima resposta 17 de out. de 2008
Respostas 1
Participantes 1