pessoal, eu ja tenho um arquivo no servidor, na pasta: …/webapps/nome_aplicacao/temp/arquivo.csv
Como eu faço para fazer o download desse arquivo para o usuario???
pessoal, eu ja tenho um arquivo no servidor, na pasta: …/webapps/nome_aplicacao/temp/arquivo.csv
Como eu faço para fazer o download desse arquivo para o usuario???
Bom quem tem que fazer o download é os usuário.
Se o arquivo está dentro do contexto da aplicação, ou seja, dentro do .war, você pode fazer um link do tipo:
<a href IGUAL "linkproarquivo">arquivo</a>
No seu jsp. :thumbup:
[edit]Obs.: Não pude escrever o HTML, pois o Forum vai tentar interpretar o HTML [/edit]
Eu tentei fazer isso, mas como o arquivo é tipo texto, ele abre no browser.
Tem como tornar possível o usuário baixar o arquivo (através do JSP) como um download normal?
Bom, você deve configurar isso no servidor de aplicações ou no Apache, MIME TYPES, que servidor você está utilizando?
eu uso o Apache Tomcat… era isso q vc tava perguntando???
Era isso mesmo.
Então entre na pasta conf do seu tomcat, exemplo: C:\apache-tomcat-5.5.17\conf, verifique o arquivo web.xml, você deve inserir umas linhas aí que dizem que o CSV é do tipo x-application. Dê uma olhada netse arquivo.
alem do que o pessoal falou acima voce pode escrever um servlet que le o arquivo eo envia para o usuario, é só setar o content-type do documento como exemplo abaixo:
response.setContentType("application/x-msdownload");
Acrescentei essas linhas:
<mime-mapping>
<extension>csv</extension>
<mime-type>application/x-application</mime-type>
é isso mesmo? não fuincionou…
[quote=benflodin]alem do que o pessoal falou acima voce pode escrever um servlet que le o arquivo eo envia para o usuario, é só setar o content-type do documento como exemplo abaixo:
response.setContentType("application/x-msdownload");
[/quote]
Você poderia me dar um exemplo???
E como meu jsp vai chamar essa servlet?
Eu fiz rotina de download via servlet, toma ai:
File t_file = new java.io.File(request.getRealPath("") + "/temp/arquivo.csv ");
long fileSize = t_file.length();
InputStream in = new FileInputStream(t_file);
if (in != null) {
response.reset();
response.setContentType("application/x-msdownload");
String s = "attachment; filename=" + t_file.getName();
response.setHeader("Content-Disposition", s);
response.setContentLength((int) fileSize);
byte[] b = new byte[2048];
int len = 0;
while ((len = in.read(b)) > 0)
{
response.getOutputStream().write(b, 0, len);
}
in.close();
}
Francisco Rodrigues
Vou postar aqui o fonta do meu servlet inteirinho!
Fiz igual vc colocou pra mim, mas mesmo assim abriu no browser…
[code]<%@ page import=“java.io.*”%>
<%
File t_file = new java.io.File(request.getRealPath("") + "/temp/Relatorio.csv ");
long fileSize = t_file.length();
InputStream in = new FileInputStream(t_file);
if (in != null){
response.reset();
response.setContentType(“application/x-msdownload”);
String s = “attachment; filename=” + t_file.getName();
response.setHeader(“Content-Disposition”, s);
response.setContentLength((int) fileSize);
byte[] b = new byte[2048];
int len = 0;
while ((len = in.read(b)) > 0)
{
response.getOutputStream().write(b, 0, len);
}
in.close();
}
%>
O que eu estou fazendo de errado???
Acredita em mim. Você tem que configurar o web.xml do seu TOMCAT! :twisted:
Mesmo que você faça no JSP tem que configurar para ele entender que você não quer que o BROWSER interprete o arquivo. Do jeito que você estava fazendo antes também está certo, pode gerar o arquivo e colocar um link! Porém você deve configurar o web.xml se quiser que o arquivo seja disponibilizado para download.
Por exeplo altere a o arquivo para .zip, e coloque uma referencia para este arquivo, ele não vai abrir no browser, ele vai abrir a caixa de download.
so pra constar, deposi que vc configurou o xml do tomcat vc reiniciou ele neh?!
Isso não é a servlet, e sim a jsp. Tenta criar uma servlet e chamar via a sua jsp.
Francisco Rodrigues
Deu certo!
Como eu quero salvar um csv (que vai ser aberto pelo excel), eu copiei a configuração da extensão do xls lá no web.xml e alterei para csv!
Ah! Eu reiniciei o tomcat sim, viu?
<mime-mapping>
<extension>csv</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
Pessoal! Muito obrigada por toda a atenção que vcs me deram! Eu não teria conseguido sem essa ajuda!!! Muito obrigada mesmo!!!
Oi Francisco, implementei teu exemplo, faço o downlodad do arquivo, mais quando eu abro ele ta colocando o conteudo de minha pagina jsp dentro do arquivo. Como posso resolver isso ?
Antecipadamente obrigado pela ajuda,
Fabio Botelho
[quote=francisco.rodrigues] Eu fiz rotina de download via servlet, toma ai:
File t_file = new java.io.File(request.getRealPath("") + "/temp/arquivo.csv ");
long fileSize = t_file.length();
InputStream in = new FileInputStream(t_file);
if (in != null) {
response.reset();
response.setContentType("application/x-msdownload");
String s = "attachment; filename=" + t_file.getName();
response.setHeader("Content-Disposition", s);
response.setContentLength((int) fileSize);
byte[] b = new byte[2048];
int len = 0;
while ((len = in.read(b)) > 0)
{
response.getOutputStream().write(b, 0, len);
}
in.close();
}
Francisco Rodrigues[/quote]
fiz uma implementação e um post sobre isso tem exemplo la do projeto para baixar
http://brunodanielmarinho.wordpress.com/2011/08/26/download-de-arquivos-do-servidor/