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 :

Probleme de telechargement.


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 Probleme de telechargement.
    Bonjour, voila j'ai ce code qui me permet de télécharger un fichier son, j'arrive bien à télécharger le fichier mais le seul problème, au lieu que mon navigateur me propose de télécharger le fichier, il me l'affiche c'est à dire que ma page est rempli de caractères incompréhensible, et je ne vois plus quoi modifier pour avoir un téléchargement fonctionnel,

    voila mon code :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    	public void download() throws FileNotFoundException
    	{
            logger.debug("METHODE download");
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext ec = context.getExternalContext();
    		HttpServletResponse response = (HttpServletResponse) ec.getResponse();
     
    		response.reset();
     
    		response.setHeader("Pragma","public");
    		response.setHeader("Expires","0");
    		response.setHeader("Content-Description","File Transfer");
    		response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
    		response.setHeader("Cache-Control: private","false");
    		response.setContentType("application/force-download");
    		response.setHeader("Content-Disposition", "attachment; filename=music.mp3");
    		response.setHeader("Content-Transfer-Encoding","binary");
     
     
    		ServletOutputStream sop;
    		try {
    			sop = response.getOutputStream();
     
    			InputStream in = new FileInputStream("C:/music.mp3");
     
    			int ch;
                while((ch = in.read()) !=-1)
                {
                   sop.write(ch);
                }
    			sop.flush();
     
    			context.responseComplete();
    		} 
    		catch (IOException e){e.printStackTrace();}
                 }
    je me casse la tête la dessus depuis vendredi...

  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
    salut,

    tu aurais pu utiliser le meme post que vendredi, pour suivre le problème du début..
    n'oublie pas le ; après le nom du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Content-Disposition", "attachment; filename=music.mp3;");

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    met déjà audio/mp3 pour le content-type, et pour le content-disposition, ajoute des " " autour du nom de fichier

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    J'ai mis à jour vos modifications et j'ai toujours le m^me problème,

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public void download() throws FileNotFoundException
    	{
            logger.debug("METHODE download");
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext ec = context.getExternalContext();
    		HttpServletResponse response = (HttpServletResponse) ec.getResponse();
     
    		response.reset();
     
    		response.setHeader("Pragma","public");
    		response.setHeader("Expires","0");
    		response.setHeader("Content-Description","File Transfer");
    		response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
    		response.setHeader("Cache-Control: private","false");
    		response.setContentType("audio/mp3");
    		response.setHeader("Content-Disposition", "attachment; filename=\"music.mp3\";");
    		response.setHeader("Content-Transfer-Encoding","binary");
     
     
    		ServletOutputStream sop;
    		try {
    			sop = response.getOutputStream();
     
    			InputStream in = new FileInputStream("C:/music.mp3");
     
    			int ch;
                while((ch = in.read()) !=-1)
                {
                   //sop.write(ch);
                   sop.write(ch);
                }
    			sop.flush();
     
    			context.responseComplete();
    		} 
    		catch (IOException e){e.printStackTrace();}

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    j'ai aussi la description de la requete si ça peut vous aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Réponse
    Server	Apache-Coyote/1.1
    Pragma	public
    Expires	0
    Content-Description	File Transfer
    Cache-Control	must-revalidate, post-check=0, pre-check=0, private: false
    content-disposition	attachment; filename="music.mp3";
    Content-Transfer-Encoding	binary
    Content-Type	audio/mp3
    Transfer-Encoding	chunked
    Date	Mon, 22 Sep 2008 15:18:40 GMT

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    la requete me parait normale, le probleme vient peut être de mon bouton ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a4j:commandButton styleClass="simpleButton" value="Récupérer" action="#{fileBean.download}" style="margin-top:10; margin-right:5px;">
     
    			</a4j:commandButton>

  7. #7
    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
    ferme ton outputStream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sop.close();
    context.responseComplete();

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    toujours le même résultat

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je suis étonné, dans ton bout de code, Content-Disposition a bien les majuscules, alors que dans ton output, il n'y en a pas! Essaie aussi de retirer de ton code tout ce qui n'est pas content-disposition et content-type. Ton header pour le cache m'a l'air douteux, il pourrait empecher la lecture des autres headers par le browser, peut etre...

  10. #10
    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
    la requete me parait normale, le probleme vient peut être de mon bouton ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a4j:commandButton styleClass="simpleButton" value="Récupérer" action="#{fileBean.download}" style="margin-top:10; margin-right:5px;">
     
    			</a4j:commandButton>
    utilse un <a4j:commandButton/> n'est pas fait pour la navigation..

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    mon code se trouve dans un bean, c'est peut être de la que provient le problème

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    Merci Sniper le problème venait du bouton, 1 journée et demie pour ça, ça me tue, et encore merci...

  13. #13
    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
    tu as essayé avec un ?

    et en enlevant tout ce qui n'est pas content-type comme a dit tchize

  14. #14
    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
    Très bien

    la prochaine fois ça te prendra 2 minutes

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    evidement, si on récupère le contenu en ajax et qu'on l'envoie dans le DOM, le content-disposition sert pas à grand chose

  16. #16
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 76
    Par défaut
    j'ai enlevé les content-type et ça fonctionne très bien, voila pour l'info bye

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

Discussions similaires

  1. probleme pour telecharger un fichier
    Par warubi dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/06/2007, 17h18
  2. Probleme de telechargement d'image bmp
    Par Asmod_D dans le forum SDL
    Réponses: 5
    Dernier message: 29/10/2006, 13h29
  3. probleme de telechargement force
    Par phoeniix07 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2006, 16h55

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