IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

bouton pour telecharger


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut bouton pour telecharger
    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

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton action="#{bean.download}"/>
    --Bean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    }

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    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...

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
                }
    une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.sendRedirect("http://localhost:8080/files/file.txt");

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    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 ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    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

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    		}
    	}

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    vu que je n'arrive pas à utiliser la méthode précédente j'ai testé celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    		}
    mais bon j'ai firefox qui me dit :

    Firefox ne sait pas ouvrir cette adresse car le protocole (c) n est associé a aucun programme

    arf

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par solarien Voir le message
    vu que je n'arrive pas à utiliser la méthode précédente j'ai testé celle ci :
    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.

    Citation Envoyé par solarien Voir le message
    mais bon j'ai firefox qui me dit :
    Firefox ne sait pas ouvrir cette adresse car le protocole (c) n est associé a aucun programme
    et il te dit quoi IE..?

    mets le fichier dans un répertoire de ton serveur..

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    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

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par solarien Voir le message
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("audio/wav");

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bouton pour afficher/cacher une toolbar ??
    Par pi05 dans le forum MFC
    Réponses: 3
    Dernier message: 07/02/2005, 22h05
  2. Lien pour TELECHARGER une image plutôt que pour l'ouvrir
    Par nabab dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2005, 18h07
  3. desactiver bouton pour certains enregistrements
    Par GymTonic dans le forum IHM
    Réponses: 7
    Dernier message: 04/01/2005, 23h46
  4. [JFileChooser] Bouton pour sauvegarder.
    Par Katyucha dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/01/2005, 12h02
  5. [FLASH MX2004] Bouton pour lire vidéo
    Par kiki93 dans le forum Flash
    Réponses: 10
    Dernier message: 23/11/2004, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo