oq eu devo colocar no meu código para que quando eu criar um link para um arquivo no servidor ele aparecer a tela de download ao invés dele abrir o arquivo no browser?
exemplo:
eu tenhu um arquivo nome.txt <— quando eu crio um link para esse arquivo e clico nele, ele abraço no browser!
no php tem algo que se coloca no código pra pedir pra salvar em disco, como eu faço isso em JSP?
Tudo bem?
Cara, eu não sei se isso vai servir pra você, mas você pode fazer um servlet com um método sendo executado a partir de uma requisição feita quando o usuário clicar no link. Neste método você deve ler o arquivo, e enviá-lo na resposta do servidor.
Onde nomeArquivo é uma String com o nome do arquivo que você quer que apareça na caixa de download, arquivo é um array de bytes com o arquivo propriamente dito e contentType é uma String com o tipo MIME do arquivo que está sendo enviado para download.
Tomara que ajude…
C
cimarinho
Estou com a mesma duvida, você já conseguiu arrumar.
Agradeço Marcelo
betonit
Possuo um problema interessante com o download q estou fazendo de meu arquivo q é de forma semelhante a já citada. Qd faço o download dele e peço para abrir direto, ele baixa uma espécie de cópia do arquivo original com 0 bytes e dá erro. Se eu escolho o botao salvar e logo após dou um “abrir”, ele abre corretamente. Alguém já teve este tipo de problema?
esb
betonit, dá algum erro?
[]s
betonit
Cara, nda na stacktrace. Nenhum erro detectado…
esb
betonit:
Cara, nda na stacktrace. Nenhum erro detectado…
Bizarro esse erro. Apesar de você dizer que está salvando normalmente, tente debugar e ver o que ocorre. Se o arquivo está sendo enviado corretamente mesmo. Fora isso, está testando em qual navegador? Apesar de achar que isso não tem nada a ver…
betonit
O código que estou utilizando é:
publicclassDownloadArquivoextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{try{HttpSessionsession=request.getSession(false);if(session==null){thrownewSessionException("Sua sess\343o expirou, favor logar novamente.");}Stringnu_protocolo=Utilities.parseToString(request,"nu_protocolo");Stringco_relatorio_aplco=Utilities.parseToString(request,"codigoCobol");StringradioOption=Utilities.parseToString(request,"radioOption");ArrayListarrayList=null;if("zip".equalsIgnoreCase(radioOption)){arrayList=newRelatorioDAO().getZIP(nu_protocolo,co_relatorio_aplco);response.setHeader("Content-Disposition","attachment; filename="+((String)arrayList.get(5)).trim()+".zip");response.setContentType("application/x-zip-compressed");}else{//pdfarrayList=newRelatorioDAO().getPDF(nu_protocolo,co_relatorio_aplco);response.setHeader("Content-Disposition","attachment; filename=\""+((String)arrayList.get(5)).trim()+".pdf\"");response.setContentType("application/pdf");}// CFA - Recuperando os parametros correspondente ao campo Blob BlobarquivoBLOB=(Blob)arrayList.get(0);InputStreamis=(InputStream)arrayList.get(1);byte[]arquivo=newbyte[(int)arquivoBLOB.length()];is.read(arquivo);// CFA - Movendo o arquivo de bytes para um buffer de stream ...BufferedOutputStreamoutput=newBufferedOutputStream(response.getOutputStream());output.write(arquivo);output.flush();output.close();((ResultSet)arrayList.get(2)).close();((PreparedStatement)arrayList.get(3)).close();((ConnectionJNDIDAO)arrayList.get(4)).closeConnection();}catch(SQLExceptionse){se.printStackTrace();}catch(IOExceptionioe){ioe.printStackTrace();}catch(Exceptione){e.printStackTrace();}finally{this.destroy();}}}
Já fiz vários testes usando várias classes que herdam a “OutputStream” mas n obtive sucesso. Alguém tem alguma sugestão?!
[]´s
Arcadex
Meu browser em casa sempre dava esse qdo pedia para abrir ao invés de salvar. Acho que o problema não é do seu código e sim, alguma configuração da máquina onde está testando.
Tente fazer o teste em outra máquina OU
tente abrir um arquivo que está em anexo no seu email (por exemplo, um powerpoint) veja se ocorre o mesmo erro…
Abraços a todos.
Arcadex
Uma ajuda…
Alguém sabe como fazer a mesma coisa via [color=red]webservice[/color] ???
Preciso enviar uma mensagem via webservice que atualmente envia apenas dados, e que agora tb precisará enviar um arquivo Excel.
Uso o Axis para gerar o WSDL.
Alguem sabe um manual? Já fez e possa postar o código do WSDL e da implementação do “Server” do Webservice?
Agradeço imensamente qualquer ajuda.
Abraço.
O_Mano
Alguem poderia me ajudar…
preciso enviar um arquivo .xml que está em um determinado diretório do servidor.
como faço isso… olhei os exemplos desta página. mas não consegui…
Tenho na minha servlet um File que é um arquivo xlm. e preciso mandar ele para o cliente
…
Se alguem poder me ajudar… agradeço.
F
fabiobotelhojg
O Mano, implementei esse exemplo, mais estou com um probleminha. Quando salvo o arquivo, toda vez ele me envia o conteudo de meu jsp.
Estou querendo apenas mandar os dados de uma datatable, você sabe dizer como posso fazer isso?
Antes de mais nada obrigado pela ajuda,
fabio Botelho
esb:
E ai Jaison,
Tudo bem?
Cara, eu não sei se isso vai servir pra você, mas você pode fazer um servlet com um método sendo executado a partir de uma requisição feita quando o usuário clicar no link. Neste método você deve ler o arquivo, e enviá-lo na resposta do servidor.
Onde nomeArquivo é uma String com o nome do arquivo que você quer que apareça na caixa de download, arquivo é um array de bytes com o arquivo propriamente dito e contentType é uma String com o tipo MIME do arquivo que está sendo enviado para download.