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 de fichier vers l'utilisateur


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Par défaut Envoi de fichier vers l'utilisateur
    Bonjour,

    j'ai un petit soucis pour la réception d'un fichier stocké en base (en Blob) pour un utilisateur.
    Je me suis servi de la FAQ "Comment ouvrir un fichier dans le navigateur avec Struts?" et voici ce que j'ai fais :

    JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <c:if test="${!empty files.file_doc}">
    	<html:link page="/viewFile.do?id=${files.file_codeId}&file=doc" target="_blank" > 
    	Voir la documentation
    	</html:link>
    </c:if>
    L'action correspondante:
    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
     
           Integer codeId = Integer.parseInt(request.getParameter("id"));
            String file = request.getParameter("file");
     
            IFiles IFiles = new FilesDAO();
            Files f = IFiles.getFilesById(codeId);
     
            if (file.equals("doc")) {
                logger.info("Récupération de la documentation");
     
                ByteArrayOutputStream bos = new ByteArrayOutputStream(5000);
                try {
                    InputStream in = f.getFile_doc().getBinaryStream();
                    int bytesRead = 0;
                    while ((bytesRead = in.read()) != -1) {
                        bos.write(bytesRead);
                    }
     
                    logger.debug("Extension en base: " + f.getFile_doc_ext());
                    logger.debug("Type MIME: " + GlobalVars.p.getProperty("ext" + f.getFile_doc_ext()));
                    response.setContentType(GlobalVars.p.getProperty("ext" + f.getFile_doc_ext()));
                    response.setContentLength(bos.size());
     
                    OutputStream os = response.getOutputStream();
                    os.write(bos.toByteArray(), 0, bos.size());
                    os.flush();
                    os.close();
                    in.close();
     
                } catch (SQLException e) {
                    logger.error("Erreur lors de la capture du flux du blob" + e);
                }
            }
              ... 
               return null;
    Donc en gros dans l'action, je récupère un objet de type Files qui contient mon champs file_doc (blob) et file_doc_ext (l'extension du fichier correspondant aux données du blob).
    Je fais le traitement nécéssaire comme dans la FAQ en gérant les types MIME de manière automatique, bref, tout ça fonctionne niquel.
    Quand l'utilisateur clique sur le lien "Voir la documentation" ça lui ouvre bien une fenetre avec le fichier.

    LE probleme était que si l'utilisateur faisait clic droit enregistrer sous, on lui proposait bien d'enregistrer le fichier mais avec un nom du type viewFile.do (le nom de l'action du html:link donc).
    J'ai donc rajouté ceci à mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     response.setHeader("Content-Disposition", "attachment;filename=Documentation"+ f.getFile_doc_ext());
    Ok ça marche, mais maintenant meme quand je clique normalement sur le lien, ça me propose de l'enregistrer et ça n'ouvre plus une nouvelle fenêtre -.-


    Si quelqu'un a une idée :3

  2. #2
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Je ne pense pas qu'il y ait de solution miracle pour ce problème...

    Le bon côté des choses c'est que l'utilisateur peut encore l'ouvrir depuis la fenêtre qui s'ouvre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Par défaut
    Apparement oui, j'ai continué à chercher sans rien trouver :3
    Mais c'est pas plus mal comme ça après tout;P

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

Discussions similaires

  1. [XL-2007] Valider l'envoi du fichier vers l'imprimante
    Par Bugzy1963 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/04/2010, 17h11
  2. export du fichier vers l'utilisateur
    Par habiba dans le forum Django
    Réponses: 11
    Dernier message: 22/02/2009, 10h47
  3. [SERVLET] envoi de fichier vers IE
    Par attwad dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 07/08/2007, 11h53
  4. Envoi de fichier vers le browser
    Par resinDevelopper dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/04/2007, 18h13
  5. Pb envoi de fichier vers client via "ServletOutputStream"
    Par fredos70 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/11/2006, 14h47

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