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

Entrée/Sortie Java Discussion :

[SERVLET] envoi de fichier vers IE


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 42
    Points
    42
    Par défaut [SERVLET] envoi de fichier vers IE
    Bonjour, j'ai un servlet qui est appellé dans une popup et qui est sensé envoyer un fichier au client.
    Mon code fonctionne mais pas tout le temps...
    par exemple: quand je suis sur le PC du serveur, ca marche tout le temps que ce soit sous IE7 ou firefox mais quand je passe sur un poste client et que j'appelle la servlet, ca marche sous firefox mais pas sous IE, j'obtiens une jolie exception:

    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
    ClientAbortException:  java.net.SocketException: Software caused connection abort: socket write error
        at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:398)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:262)
        at org.apache.coyote.tomcat5.OutputBuffer.writeByte(OutputBuffer.java:427)
        at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:64)
        at com.baha.server.prt.core.FileDlServlet.doGet(FileDlServlet.java:95)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419)
        at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
    Je suis sous tomcat 5.0.28 et java 1.4
    Voici le code utilisé pour envoyer le fichier stoqué sur le serveur au client: (sans les try/catch/finally)

    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
     
    file = request.getParameter("file");
    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition","attachment;filename=\"facture.pdf\"");
     
    out = response.getOutputStream();
     
    pdfFile = new File(file);
    in = new FileInputStream(pdfFile);
    int b;
    while((b=in.read())!=-1){
           out.write(b);
    }
    out.flush();
    out.close();
    in.close();
    Voilà je suis à court d'idées pour expliquer ce phénomène...
    Des idées de votre côté?
    merci!

    edit:
    chose pouvant en éclairer certains (je l'espère)
    après une "petite" scéance de débuggage j'ai vu ceci:
    mon fichier fait 72ko
    J'obtiens mon exception juste quand j'envoie le 32768ème byte (32k quoi)... alors que sous firefox celui-ci est bien reçu et ceci jusqu'au 72000ème byte...
    D'où elle sort cette puissance de 2 et quel est le rapport avec mon problème???

  2. #2
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 42
    Points
    42
    Par défaut
    Autorésolution du problème.......
    En fait il fallait que j'active dans les options d'Internet explorer 7 la case
    ->Telechargements
    ->Demander confirmation pour les téléchargements de fichiers

    Sinon IE ferme gentillement la page sans rien dire...

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

Discussions similaires

  1. Applet qui envoie un fichier vers une servlet
    Par daophp dans le forum Applets
    Réponses: 0
    Dernier message: 06/12/2011, 09h01
  2. [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
  3. Envoi de fichier vers l'utilisateur
    Par mastamx dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/02/2008, 11h49
  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