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

Servlets/JSP Java Discussion :

Pb de téléchargement d'un fichier sous IE


Sujet :

Servlets/JSP Java

  1. #1
    IMS
    IMS est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Pb de téléchargement d'un fichier sous IE
    Bonjour,

    Avec le code qui suit (provenant d'une servlet, méthode doPost) je souhaite récupérer un fichier excel depuis mon serveur :
    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
     
    //response est de type HttpServletResponse 
    //xlsFile est de type File
     
    ServletOutputStream out = null;
    BufferedInputStream bufInputStream = null;
    String szDocName        = xlsFile.getName();
     
    try
    {
        response.resetBuffer();
        response.setContentType("application/force-download");
        response.setHeader("Content-Disposition", "attachment;filename=\"" + szDocName + "\"");
     
        response.setContentLength((int) xlsFile.length()); 
        out = response.getOutputStream();
     
        bufInputStream = new BufferedInputStream(new FileInputStream(xlsFile)); 
        int bufferSize = 64 * 1024;
        byte[] bufferFile = new byte[bufferSize]; 
     
        for (int i = 0; ; i++) 
        { 
            int len = bufInputStream.read(bufferFile); 
            if(len < 0) 
                break; 
            out.write(bufferFile, 0, len); 
        } 
        out.flush(); 
    }
    catch(Exception e)
    { e.printStackTrace(); }
    finally
    {
        try 
        { bufInputStream.close(); } 
        catch (Exception e) 
        { }
    }
    Ca marche sans problème sous firefox, mais çà plante sous IE.
    Le message affiché est :
    Internet explorer n'a pas pu ouvrir ce site Internet...
    Coté serveur Jonas j'ai une exception qui est levée du type :
    ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
    Voilà vous savez tout.
    J'ai essayé d'ajouter dans le header des no-cache, expires... mais rien n'y fait !
    Le site est en http (en attendant de passer en https) donc le problème de cache ne devrait pas se faire sentir.

    Si vous avez des idées je suis preneur
    Merci d'avance

  2. #2
    IMS
    IMS est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Je n'ai pas trouvé de réponse exacte à ma question mais voici une solution intermédiaire qui fonctionne sous IE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //response.setHeader("Content-Disposition", "attachment;filename=\"" + szDocName + "\""); 
    response.setHeader("Content-Disposition", "inline;filename=\"" + szDocName + "\"");
    Par ce biais, ma feuille excel est ouverte directement dans le navigateur sous IE.
    Sous firefox, une fenêtre me demande où enregistrer le fichier comme je le souhaite.

    Voilà, si vous avez une explication, je suis toujours preneur !
    Merci

  3. #3
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    euh le force-download je connaissais pas...

    sur mon serveur j'exporte des fichiers excel de cette manière sous IE et FF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    response.reset();
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition",
    	"attachment; filename=\"" + szDocName + "\";");

  4. #4
    IMS
    IMS est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    MERCI !!!
    En lisant ta réponse je viens de voir la seule et unique différence entre mon code et le tiens : il me manquait un ; en fin de ligne de code juste après le nom du fichier !!! Sacré IE !

    Le force-download me permet d'indiquer que le fichier doit être téléchargé et non pas affiché à l'écran.

    Voilà une affaire qui roule !

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

Discussions similaires

  1. Téléchargement de fichier sous php
    Par minipopov dans le forum Langage
    Réponses: 11
    Dernier message: 26/05/2012, 17h52
  2. Téléchargement de fichier sous IE
    Par Nikamura dans le forum IE
    Réponses: 0
    Dernier message: 08/10/2009, 09h59
  3. Réponses: 3
    Dernier message: 15/04/2009, 17h03
  4. tester l existence d un fichier sous turbo pascal
    Par Newllite dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/01/2004, 12h47
  5. Les fichiers sous linux/windows
    Par Stessy dans le forum Linux
    Réponses: 5
    Dernier message: 05/12/2003, 09h30

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