Response - enviar um arquivo para download [resolvido]

Boa tarde Guj,

Seguinte:

O usuário requisita um relatório, eu gero este relatório no servidor e quero enviar para download. O que acontece é que o arquivo abre no browser (como se fosse uma página), e não abre a opção para download.

Sei que o redirect redireciona para página mas como fazer redirecionar para um download?

Estou tentando assim:

response.sendRedirect(fileName);

Já tentei setar o header e ContentType mas não adianta.:

response.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
response.setContentType("application/octet-stream;name=" + fileName + "Content-Disposition:attachment;filename=" + fileName);

não sei se faz diferença mas é um arquivo “.csv”

Muito obrigado.

bem provável que o seu browser reconhece esse tipo de arquivo e tenta abri-lo, faça um teste colocando uma extensão diferente.

Wonder pior que não é isso, já modifiquei também a extensão só que continua abrindo dentro da página.

Não sei por que não está abrindo como download.
E é uma coisa simples, redirecionar para um download.

Alguém tem alguma idéia?

[]´s

Eu uso só isso:

response.setContentType(“application/octet-stream”);

Sei, mas e para passar o endereço do arquivo?
Você vai ter que dar um “response.sendRedirect(fileName);” certo?

Então acho que é nessa parte que ferra tudo!

Obrigado.

Você tá colocando o nome do arquivo com o host ou só com a “/”?

Maurício Linhares,

Cara estou passando só com ‘/’ mas creio que não seja este o problema pois
consigo encontrar o arquivo, só que ele abre na página e não força o download.

Como seria pra eu passar o host?

Eu leio os bytes do arquivo, via um Stream e grava no Output. É melhor!

danieldestro pior que eu estava fazendo exatamente isso.

O que ocorre é que desta maneira acabava dando “out of memory” pois são diversos relatórios para diversos clientes. imagine, cada relatório possui cerca de 50.000 linhas.

Então tivemos a idéia de montar o arquivo fisico e ir dando flush() para não alocar muita memória (arquivos com 20 megas). Tudo está ok, no que diz respeito a criação e localização do arquivo. Só que não consigo redirecionar para o download, o arquivo acaba abrindo dentro da página…

:cry:

Eu continuo fazendo aquilo e dando flush() tbm.

danieldestro consegui cara, tinha que configurar no WebSphere em entradas MIME padrão.
Depois de configurado ele força o download com o aplicativo excel:

No web sphere:

tipo: x-application/csv
extensão: csv 

No código:

response.setContentType("application/vnd.ms-excel");

Muito obrigado a todos.