Nous sommes actuellement le 28 Mars 2024, 17:11

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 2 message(s) ] 
Auteur Message
 Sujet du message: (Java) OutputStream, IE vs FF
MessagePublié: 25 Fév 2009, 12:58 
Hors-ligne
Fidèle
Fidèle

Inscription : 07 Oct 2004, 16:39
Message(s) : 852
Bonjour,

je me suis apperçu d'un problème de téléchargement de fichier sur un serveur distant sur Internet Explorer. Ce que je ne comprends pas, c'est que ça fonctionne #1 avec FireFox. Et même, dans mon environnement de dévelopement, ça fonctionnait bien.

Je vous décrit le problème. J'ai un servlet qui produit un fichier CSV à partir d'une recherche dynamique dans une BD. Pour gagner de la rapidité, j'ai décider de streamer le fichier produit chez le client. Le gain de performance est énorme en pire cas. Quand j'essaie ma solution sur un serveur distant, l'ouverture du OutputStream est plus longue et cela fait en sorte que je perds l'information de l'entête de la réponse sous internet explorer. Au lieu de me retourner un fichier, il me retourne tout le contenu du fichier, comme si c'était une page HTML. Dans FireFox tout ce passe comme il faut.

Je ne comprend pas, j'ai même auguementé le délai d'expiration et cela ne change rien.

Code :
String fileName = "Resultat" +
     (new SimpleDateFormat("yyyy_MM_dd_HH'h'mm")).format(new java.util.Date()) +
     ".csv";

     // Set la date d'expiration
     Date date = new Date();
     date.setTime(date.getTime() + 180000);
     response.setHeader("Expires", date.toString());

     // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
     response.addHeader("Cache-Control", "post-check=0, pre-check=0");
     if((request.getHeader("User-Agent").indexOf("NT 5.0") != -1) &&
        (request.getHeader("User-Agent").indexOf("MSIE")   != -1)) {
          response.setContentType("text/csv;charset=utf-8");
          response.setHeader("Content-Disposition",
                "inline; filename=\"" + fileName + "\"");
     } else {
          response.setContentType("text/plain; charset=UTF-8");
          response.setHeader("Content-Disposition",
                "attachment; filename=\"" + fileName + "\"");
     }

     System.out.println("Output Stream ouvert ...");
     OutputStream oStream = response.getOutputStream();

     entete(buf, _formulaire);
     oStream.write(buf.toString().getBytes());
     oStream.flush();

     ....


Je ne comprends pas ce qui est incorrecte là dedans, puisqu'en locale, ça fonctionne.

Avez-vous des suggestions ?

_________________
dgagnon


Haut
 Profil  
Répondre en citant  
MessagePublié: 26 Fév 2009, 13:57 
Hors-ligne
Fidèle
Fidèle

Inscription : 07 Oct 2004, 16:39
Message(s) : 852
J'ai trouvé. Il semble que sur le serveur distant, l'application faisait quand même son forward à la fin de l'action. En retournant null, ça a réglé mon problème. Ce que je ne comprend toujours pas, c'est la différence d'exécution en locale. Pourquoi ça marchait ?

_________________
dgagnon


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 2 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site