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