bonjour,
je voudrai faire un bouton qui permette a l'utilisateur de télécharger un fichier nommé truc.txt, mais comment faire ?!? :( si vous avez une idée...
merci d'avance
Version imprimable
bonjour,
je voudrai faire un bouton qui permette a l'utilisateur de télécharger un fichier nommé truc.txt, mais comment faire ?!? :( si vous avez une idée...
merci d'avance
--Bean.javaCode:<h:commandButton action="#{bean.download}"/>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public void dowload(){ FacesContext context = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); String fileName="nom.txt"; response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ""); OutputStream out; try { out = response.getOutputStream(); // ajouter le flux text dans la response out.close(); context.responseComplete(); } catch (IOException e) { e.printStackTrace(); }
es tu sur de rien n'avoir oublié, j'exécute ton code mais ne se passe rien, mon nom de fichier est C:/xa.txt et il existe bien, et je passe bien dans la méthode, arf, et je ne vois pas quoi modifer...:?
le code n'est pas complet..
il faut lire ton ficher..et passer le flux de données dans la response..
utilise les classe java.io
un truc dans le genre:
une autre solutionCode:
1
2
3
4
5
6
7 InputStream in = new BufferedInputStream (new FileInputStream("file.txt") ); int ch; while ((ch = in.read()) !=-1) { out.print((char)ch); }
Code:response.sendRedirect("http://localhost:8080/files/file.txt");
Hormis le fait que Sniper37 a oublié un n dans download (du code Java), c'est la méthode à utiliser.
Tu dis que ça ne marche pas...
Tu as des erreurs dans les logs ? L'action est-elle bien appelée ?
l'action est bien appelé, et je n'ai pas d'erreur je vais voir ce qui se passe pas bien et je vous met au jus, et merci encore
pfff, bon je dois pas être bien doué, part le n de download j'ai rien réussi de bien , il faut que je rajoute quoi à ce code si je veux que l'utilisateur ai xaxa.wav, :(
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public void download() { logger.debug("METHODE download"); FacesContext context = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); String fileName="C:/xaxa.wav"; response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ""); OutputStream out; try { out = response.getOutputStream(); out.close(); context.responseComplete(); } catch (IOException e) { logger.error("erreur dans la méthode dowload de la classe FileBean", e); } }
vu que je n'arrive pas à utiliser la méthode précédente j'ai testé celle ci :
mais bon j'ai firefox qui me dit :Code:
1
2
3
4
5
6
7
8
9
10
11 ELContext context = FacesContext.getCurrentInstance().getELContext(); HttpServletResponse response= (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); try { response.sendRedirect("file://C:/xaxa.txt"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Firefox ne sait pas ouvrir cette adresse car le protocole (c) n est associé a aucun programme
arf :evilred:
pour la méthode précédente, il y'avait juste le principe, tu dois chercher comment lire le flux de byte d'un ficher wav et le mettre dans l'outputStream de la response.
et il te dit quoi IE..?
mets le fichier dans un répertoire de ton serveur..
c bon j'arrive a télécharger mon fichier son, mais je vois le contenu, un peu galère... , vous faites comment pour modifier le MIME que je vous donne mon code entier
le problème vient du bouton qui appel ma fonction dans le bean, j'utilise un <a4j:commandButton> en faite ce type de bouton n'est pas fait pour la navigation, donc en utilisant un <h:commandbutton> tout fonctionne bien, merci beaucoup à Sniper et aux autres aussi... bye