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 :

Envoi fichier pdf au client


Sujet :

Struts 1 Java

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut Envoi fichier pdf au client
    Bonjour a tous, j utilise le framework struts 1.2.4 pour le developpement d'une application web.
    J'utilise notament le html:file proposé par struts pour uploader un fichier vers le serveur.

    Helas, je rencontre un problème:
    J'upload un fichier pdf vers le server, une action struts s'occupe du formFile (elle place le document pdf dans un path non accessible aux users de l'appli).
    Le probleme est le suivant, je propose aux users (et selon leurs droits) de télécharger un certain nombre de documents en cliquant sur des liens!!!
    Chaque lien pointe vers une action dont le role est de lire le fichier coté serveur et de balancer son contenu vers le client (via response.getOutputStream(), avec le bon content type).

    J'ai un problème pour reblancer un fichier de type pdf, en effet lorsque je l'ouvre (via l'invite de IE par exemple), j ai un message d'erreur provenant d'acrobat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Une erreur est survenue lors du traitement d'une page. Ressource de fonction incorrecte.


    Lorsque j'ouvre directement le fichier uploadé avec l'explorateur, je n ai aucune erreur... => c'est lors de la phase de génération du flux pour le client qu'il y a un problème

    Quelqu'un peut il m aider?

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Hello Benjamin, peut tu simplement mettre ici le code de ton transfert pdf -> stream stp ?
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    le voici
    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
    38
    39
    40
    41
    42
    43
     
                try {
     
                    //Download
                    String fileName = coursVO.getNomFichier();
                    String contentType = "";
                    String contentDisposition = "attachment;filename=" + fileName;
                    String fileExt = "";
     
                    //Recuperation et lecture du contenu du fichier
                    File file = new File(this.getFileAbsolutePath(coursForm, request));
                    fileExt = this.getFileExt(file);
                    contentType = GesUtMimeMapping.getInstance().getMimeTypeForExt(fileExt);
     
                    //Preparation de la reponse;
                    response.setContentType(contentType);
                    response.setHeader("Content-Disposition", contentDisposition);
                    response.setContentLength((int)file.length());
     
                    //Ecriture de la reponse
                    OutputStream os = response.getOutputStream();
                    FileInputStream stream = new FileInputStream(file);
                    BufferedInputStream bis = new BufferedInputStream(stream);
                    InputStream is = new BufferedInputStream(bis);
                    int count;
                    byte[] buf = new byte[4096];
     
                    while((count = is.read(buf)) > -1) {
     
                        os.write(buf, 0, count);
                    }
     
                    is.close();
                    os.close();
                } catch(FileNotFoundException e) {
     
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch(IOException e) {
     
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Bon ben j'ai resolu le prob de cette maniere, je vous met le code, en esperant que ca puisse vous servir

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
                //Download
                try {
     
                    //Recuperation et lecture du contenu du fichier
                    File file = new File(this.getFileAbsolutePath(coursForm, request));
                    fileExt = this.getFileExt(file);
                    contentType = GesUtMimeMapping.getInstance().getMimeTypeForExt(fileExt);
     
                    //Preparation de la reponse;
                    response.reset();
                    response.setContentType(contentType);
                    response.setHeader("Content-Disposition", contentDisposition);
                    response.setContentLength((int) file.length());
     
                    //Ouverture des streams
                    bis = new BufferedInputStream(new FileInputStream(file));
                    bos = new BufferedOutputStream(response.getOutputStream());
     
                    byte[] buff = new byte[4096];
                    int bytesRead;
     
                    // Simple read/write loop.
                    while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
     
                        bos.write(buff, 0, bytesRead);
                    }
                } catch(FileNotFoundException e) {
     
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    destination = GesCoStrutsConstants.FORWARD_NOK;
                } catch(IOException e) {
     
                    // TODO Auto-generated catch block
                    destination = GesCoStrutsConstants.FORWARD_NOK;
                } finally {
     
                    //Fermeture des streams
                    if(bis != null) {
     
                        bis.close();
                    }
     
                    if(bos != null) {
     
                        bos.close();
                    }
                }
            }

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

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

Discussions similaires

  1. Envoi fichier c# client lourd
    Par clodo13 dans le forum C#
    Réponses: 4
    Dernier message: 07/12/2007, 16h26
  2. Envoi d'un fichier pdf par mail
    Par jpspci dans le forum Reports
    Réponses: 5
    Dernier message: 29/06/2007, 09h35
  3. envoi d'un fichier pdf à la place d'une page html
    Par youp_db dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/12/2006, 09h19
  4. Réponses: 4
    Dernier message: 19/07/2006, 12h29

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