JSF - fazendo um link para download  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
roanbrasil
JavaChild

Membro desde: 17/12/2007 12:03:50
Mensagens: 109
Localização: Campinas, SP
Offline

alguem resolveu esse problema? O meu está dando o seguinte erro. Ja tentei C:\ e C:/

[MSN]
soul
Thread.start()

Membro desde: 26/05/2007 15:05:41
Mensagens: 45
Localização: são paulo
Offline

Você não pode apontar direto para o arquivo se é o que tentou. Você tem que ler o arquivo la no servidor via inputStream e então gravar no outputStream do servlet !!

pirm
[MSN]
divinorps
Smalltalk
[Avatar]

Membro desde: 09/01/2011 01:06:09
Mensagens: 1
Offline

ronildobraga wrote:Ola galera !
Alguem sabe se no JSF existe uma tag para fazer download de um arquivo do servidor ?
Eu criei um dataTable que lista os arquivos no servidor, mas o cliente precisa fazer download desses arquivos.
Caso nao exista uma forma facil atraves do JSF existe uma outra forma ?

Desde já muito obrigado.


Fiz algo semelhante, porém, o arquivo que precisava fazer download era gerado pela própria aplicação e armazanada em uma pasta no servidor. Criei um arquivo jsp puro e na página jsf da aplicação criei um link que passa como parâmetro para a página JSP o nome e endereço do arquivo:
Arquivo JSP:

<%@ page language="java" import="java.io.*" errorPage="" %>
<%
String nomeArquivo = request.getParameter("nomeArquivo");
File f = new File(nomeArquivo);
response.reset();
response.setContentType("application/text");
response.setHeader("Content-disposition","attachment; filename=" + f.getName());
FileInputStream input = new FileInputStream(f);
InputStream in = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(input);
while(input.available() > 0){
response.getOutputStream().write(input.read());
}
in.close();
bin.close();
din.close();
response.getOutputStream().flush();
%>

Link da página JSF que faz a chamada ao arquivo JSP:
<a href="abrirArquivo.jsp?nomeArquivo=/tmp/arquivos/teste.xls">Download</a>
Isso é uma ganbiarra, mas funciona...

Veja se te serve!

Divino.
Diabo Loiro
GUJ Master
[Avatar]
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline

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/

Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

Blog
http://brunodanielmarinho.wordpress.com

Fals - Osum Leader
http://osum.sun.com/group/fals


javaimae
Thread.start()

Membro desde: 08/08/2011 14:02:43
Mensagens: 36
Offline

Diabo eu testei sua aplicação e realmente funciona mas como eu faria se o aquivo fosse gerado em tempo de execução, e não fica-se na pasta web?

Ou tem como em tempo de execução gravar o arquivo no .war?


aim icon
Diabo Loiro
GUJ Master
[Avatar]
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline

Pegando como base a solução do post o que ele faz basicamente é pegar um arquivo no disco>ler e colocar no outputstream.

Então se vc quer gerar dinamicamente voce deve gerar o arquivo e em vez de gravar ele no disco... vc grava direto no outputstream.

No meu caso eu gerava um excel do banco de dados e gravava na hd depois lia ele e mandava para o usuario.

A solução foi gerar o excel e escrever ele direto em um ByteArrayOutputstream em vez de escrever na hd, o ByteArrayOutputStream tem um metodo toByteArray que pode ser enviado ao usuário se vc modificar levemente o o codigo do post retirando todo codigo que faz a leitura do arquivo e transforma ele em um array de bytes antes de devolver para o usuário.

Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

Blog
http://brunodanielmarinho.wordpress.com

Fals - Osum Leader
http://osum.sun.com/group/fals


javaimae
Thread.start()

Membro desde: 08/08/2011 14:02:43
Mensagens: 36
Offline

È você está correto, analisei o código novamente e é isto mesmo


aim icon
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team