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

Struts 1 Java Discussion :

Problème download fichier depuis action struts


Sujet :

Struts 1 Java

  1. #1
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut Problème download fichier depuis action struts
    Bonjour,

    J'ai un petit problème avec un download de fichier réalisé dans une action Struts.

    Contexte :
    Je souhaite mettre à disposition des utilisateurs de l'application certains fichiers se trouvant sur un FTP via mon application web. La finalité étant de ne pas leur fournir le mot de passe et de passer par le port 80.

    Ma solution technique :

    Afin de réaliser ça, j'ai affiché des liens sur une jsp affichant les différents fichier. Chacun des liens pointe vers l'action dont le code est ci-dessous :

    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 ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    		//on récupère les paramètres
    		String host = (String) request.getSession().getServletContext().getAttribute("ftp_host");
    		String port = (String) request.getSession().getServletContext().getAttribute("ftp_port");
    		String login = (String) request.getSession().getServletContext().getAttribute("ftp_login");
    		String password = (String) request.getSession().getServletContext().getAttribute("ftp_password");
    		String path = (String) request.getSession().getServletContext().getAttribute("ftp_path");
     
    		//on récupère le nom du fic à download
    		String filename = (String) request.getParameter("filename");
     
    		//Connexion au serveur		
    		FTPClient ftp = new FTPClient();
    		ftp.connect(host, new Integer(port).intValue());
    		ftp.login(login, password);
     
    		//On se positionne sur le bon répertoire
    		ftp.changeWorkingDirectory(path);
     
    		//on définit le header
    		response.setContentType("application/download"); 
            response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 
     
            //on gère le download du fichier
            ServletOutputStream out = response.getOutputStream(); 
            ftp.enterLocalPassiveMode();
            ftp.retrieveFile(filename, out);
     
            out.flush();
            out.close();
     
            ftp.disconnect();
     
    		return null;
    	}
    Mon problème :

    La redirection sur le stream fonctionne bien mais le fichier que je récupère est corrompu (j'ai des octects en plus).
    De quoi celà peut-il provenir ?
    Comment puis-je corriger le problème ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Bonjour,

    Pour t'assurer que ton code fonctionne, peut etre devrais tu tester la même chose via une Servlet.
    Comme ca tu t'assures que le problème ne vient pas de Struts mais de l'implémentation de l'API FTP.
    Sinon tu peux aussi tester ta méthode en ecrivant le flux dans un File et en essayant de l'ouvrir dans le repertoire de ton serveur.

  3. #3
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    Merci pour ta réponse Yolepro.

    Un collègue m'a finalement trouvé la solution. Il faut rajouter la ligne suivante et tout marche nickel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    PS :Merci mister Stéphane

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

Discussions similaires

  1. Retourner un fichier depuis action Struts
    Par Invité dans le forum Struts 1
    Réponses: 1
    Dernier message: 06/11/2009, 12h39
  2. problème avec les action struts
    Par kevin75 dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/09/2006, 11h24
  3. Téléchargement de fichier via action Struts
    Par babylone7 dans le forum Struts 1
    Réponses: 6
    Dernier message: 31/07/2006, 12h09
  4. Réponses: 7
    Dernier message: 30/01/2006, 22h36
  5. download de fichier depuis un serveur web
    Par minusette dans le forum Modules
    Réponses: 9
    Dernier message: 14/10/2005, 10h10

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