Download Arquivo texto

7 respostas
Z

Pessoal estou criando um aplicativo web e coloquei uma opção de geração de arquivo texto, mas o problema que sempre é gerado no servidor. :cry:

Como que eu faço para criar aquela opção de download…abre até uma telinha do windows com a opção de abrir ou salvar… Alguém já fez isso ?

Valeu.

7 Respostas

kaique

Basta você pegar os bytes desse arquivo texto que foi gerado no servidor e escrevê-los no OutputStream que existe no seu Servlet…
Não esquece de dar um flush() no final para garantir que todos os bytes serão enviados…
Qualquer dúvida posta aew…

[]'s.

Z

kaique:
Basta você pegar os bytes desse arquivo texto que foi gerado no servidor e escrevê-los no OutputStream que existe no seu Servlet…
Não esquece de dar um flush() no final para garantir que todos os bytes serão enviados…
Qualquer dúvida posta aew…

[]'s.

blz, mas hoje quando eu vou gerar o arquivo texto eu preciso passar o local que vai ser gerado, eu como que eu faço para pegar esse path ?

von.juliano
Bom, se vc está gerando um arquivo texto, suponho que vc escreve uma String nele, correto? Então, vc pode fazer o seguinte (no seu servlet):
String texto = seuMetodoQueGeraAStringComOTextoDoArquivo();
String nomeArquivo = "aquivo.txt";

FileOutputStream fileOut = new FileOutputStream(nomeArquivo);
fileOut.write(texto.getBytes());
fileOut.flush();
fileOut.close();

response.setContentType("inline/download");
String arq = "attachment;filename=" + nomeArquivo;
response.setHeader("Content-Disposition", arq);

ServletOutputStream os = response.getOutputStream();
os.write(texto.getBytes());
os.flush();
os.close();

Vê se assim te ajuda. Flw! :thumbup:

Z

Cara valeu ajudou sim…
Mas vc sabe como que eu faço para criar uma linha em branco ??
meu código ficou assim

String nomeArquivo = buildNomeArquivo("despesas");   
  
		response.setContentType("inline/download");   
		String arq = "attachment;filename=" + nomeArquivo;   
		response.setHeader("Content-Disposition", arq);
		ServletOutputStream os = null;   
  		try{
			os = response.getOutputStream();
			Iterator iterator = dados.iterator();
			while(iterator.hasNext()){
				Bean bean = (Bean )iterator.next();
				os.write((""+bean .getCodigoCR()+" ").getBytes()) ;
				os.write((bean .getDescricaoCR()+" ").getBytes());
				os.write((Util.vStringDouble(bean .getVrCustoReal())+" ").getBytes());
				os.write((Util.vStringDouble(bean .getVrVariacaoMensal())+" ").getBytes());
				os.write((Util.vStringDouble(bean .getVrVariacaoAnual())+" ").getBytes());			
				
			}
  		}catch (Exception e) {
			throw new IOException("Erro ao exportar o arquivo. " + e); 
		}finally{
			os.flush();   
			os.close();
		}
kaique

Cara, acho que se você escrever no OutputStream a String "\r\n", você terá uma linha em branco no seu arquivo…

"\r" -> Posiciona o cursor no início da linha;
"\n" -> Posiciona o cursor 1 linha abaixo da atual posição;

[]'s.

Z

kaique:
Cara, acho que se você escrever no OutputStream a String "\r\n", você terá uma linha em branco no seu arquivo…

"\r" -> Posiciona o cursor no início da linha;
"\n" -> Posiciona o cursor 1 linha abaixo da atual posição;

[]'s.

Valeu kaique funcionou, eu estava colocando somente o \n mas ele gerava uma quadrado :shock:, valeu pela ajuda. :stuck_out_tongue:

V

Ola amigos,

estou com um problema, estou usando internet discada e quando inicio um dowload ele começa e baixar os arquivos, mas
depois de um pequeno tempo aparece uma msg dizendo que o dowload foi concluido, mas só chegou a 3% de dowload e
qd tento abrir aparece que o arquivo esta comrrompido, resumindo o dowload esta concluindo antes de baixar todo o arquivo, alguem
sabe me dizer o que fazer???

Obrigado

Criado 23 de outubro de 2007
Ultima resposta 21 de mar. de 2009
Respostas 7
Participantes 4