J'ai un servlet qui envoie un fichier en définissant le type de contenu HTTP sur "application/zip
", le Content-Disposition sur "attachment
" et en l'écrivant sur la réponse OutputStream
; il se comporte correctement lorsqu'il est déployé sur mon serveur d'applications local, ce qui fait que le navigateur affiche le popup pour choisir de télécharger ou non le fichier. Cependant, lors du déploiement sur un serveur jboss en cluster, IE se bloque sur 0% demandant des informations de fichier pour le transfert entier, puis échoue avec un message d'erreur indiquant que le fichier n'était pas disponible au téléchargement: même le plus étrange avec FF et Chrome, le servlet se comporte correctement, c'est-à-dire de la même manière que sur localhost.Servlet de téléchargement de fichiers se comportant différemment avec IE sur un serveur en cluster
Des indices?
Je peux aussi fournir un petit extrait de la partie importante du code de servlet:
response.setContentType("application/zip; name=" + f.getName());
response.setContentLength((int)f.length());
response.addHeader("Content-Disposition", "attachment;filename=" + f.getName());
byte[] buf = new byte[1024];
int bytesRead;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
OutputStream os = response.getOutputStream();
while((bytesRead = bis.read(buf)) != -1) {
os.write(buf, 0, bytesRead);
}
os.flush();
bis.close();
Je ne sais pas vraiment si le problème se trouve dans mon code de servlet ou dans la configuration du serveur en cluster, mais je Je commence à deviner que la seconde chance est peut-être la bonne ... des idées sur ce qui pourrait être mauvais dans ma configuration de cluster?
Utilisez-vous une connexion SSL lors du test de l'application sur le serveur JBoss en cluster? Si oui, cela peut être l'explication - j'ai eu un problème similaire il y a un certain temps. – simon
non, HTTP simple sur les deux serveurs – Raibaz
Observations, non liées à votre problème: il n'y a pas de paramètre "nom" sur Content-Type. En outre, le paramètre filename sur Content-Disposition échouera si le nom de fichier contient des éléments tels que des virgules, des espaces ou des caractères non-ASCII. –