Ich habe ein Servlet, das eine Datei sendet, indem Sie den HTTP Content-Type auf "application/zip
", die Content-Disposition auf "attachment
" setzen und auf die Antwort schreiben OutputStream
; Es verhält sich korrekt, wenn es auf meinem lokalen Anwendungsserver bereitgestellt wird, wodurch der Browser das Popup anzeigt, um auszuwählen, ob die Datei heruntergeladen werden soll oder nicht.Datei-Download-Servlet verhält sich anders mit IE auf Cluster-Server
Bei der Bereitstellung auf einem geclusterten jboss-Server hängt der IE jedoch bei 0% an, um Dateiinformationen für die gesamte Übertragung anzufordern, und schlägt dann mit einer Fehlermeldung fehl, die besagt, dass die Datei nicht zum Download verfügbar war: noch seltsamer ist dies Mit FF und Chrome verhält sich das Servlet korrekt, also genauso wie bei localhost.
Irgendwelche Hinweise?
kann ich einen kleinen Ausschnitt aus dem bedeutenden Teil des Codes Servlet bietet auch:
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();
Ich weiß nicht wirklich, ob das Problem in meinem Servlet-Code oder in der Cluster-Server-Konfiguration liegt, aber ich Ich fange an zu erraten, dass die zweite Chance die richtige sein könnte ... irgendwelche Ideen, was in meiner Clusterkonfiguration falsch sein könnte?
Verwenden Sie eine SSL-Verbindung, wenn Sie die Anwendung auf dem gruppierten JBoss-Server testen? Wenn ja, könnte das die Erklärung sein - ich hatte vor einer Weile ein ähnliches Problem. – simon
Nein, plain HTTP auf beiden Servern – Raibaz
Beobachtungen, die nicht mit Ihrem Problem zusammenhängen: Es gibt keinen "name" -Parameter für Content-Type. Auch der Dateiname-Parameter in Content-Disposition schlägt fehl, wenn der Dateiname Dinge wie Kommas, Leerzeichen oder Nicht-ASCII-Zeichen enthält. –