Pb envoi de fichier vers client via "ServletOutputStream"
Bonjour à tous,
Je désire envoyer un fichier vers un client, simplement en proposant un lien qui pointe sur une servlet. Le but est d'utiliser un "ServletOutputStream" (voir code plus bas) . J'ai une erreur persistante "java.io.IOException: Insufficient system resources exist to complete the requested service" au niveau de mon serveur web, un Iplanet 4.1 sous windows NT4, et ceci a pour effet de "tronquer" le téléchargement. En effet, un fichier de 1500 Ko, ne fait que +/- 24 Ko une fois téléchargé :?
Voici ce que l'on peut voir au niveau de l'error log du serveur:
[14/Nov/2006:10:40:37] info ( 788): /servlet/maclasse.class: nom de fichier= f:\websites\monsite\mesfichiers\JT_5829_P_R_3M_Graphic_maker_Vutek_2360_3M_1500_series.zip
[14/Nov/2006:10:40:37] info ( 788): /servlet/maclasse.class: passé le getOutputstream
[14/Nov/2006:10:40:37] info ( 788): /servlet/maclasse.class: availableLength= java.io.FileInputStream@85120a8c
[14/Nov/2006:10:40:37] info ( 788): /servlet/maclasse.class: probleme envoi fichier, erreur= java.io.IOException: Insufficient system resources exist to complete the requested service.
[14/Nov/2006:10:40:37] info ( 788): /servlet/maclasse.class: id_client= 1488
Et voici le code dans la servlet:
Code:
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
| String name = nom_fichier_reel;
try
{
ServletOutputStream out2 = res.getOutputStream();
log("passé le getOutputstream");
res.setHeader("Content-Disposition", "attachment;filename=" + name);
FileInputStream in2 = new FileInputStream(fileName);
int availableLength = in2.available();
log("availableLength= " + in2);
byte[] totalBytes = new byte[availableLength];
int byteData = in2.read(totalBytes);
out2.write(totalBytes);
in2.close();
out2.flush();
out2.close();
}
catch (IOException ex)
{
log("probleme envoi fichier, erreur= " + ex);
}
res.setContentType("text/html");
out = new PrintWriter(res.getOutputStream()); |
Quelqu'un à une idée?
D'avance un grand merci