HTTP Content-Typeを「application/zip
」、Content-Dispositionを「attachment
」、レスポンスのOutputStream
に設定してファイルを送信するサーブレットがあります。ローカルのアプリケーションサーバーにデプロイすると正しく動作し、ブラウザーにポップアップが表示され、ファイルをダウンロードするかどうかを選択できます。クラスタ化されたサーバー上でIEと異なる動作をするファイルをダウンロードする
ただし、クラスタ化されたjbossサーバーにデプロイすると、IEは転送全体のファイル情報を要求して0%でハングし、ファイルがダウンロードできなかったというエラーメッセージが表示されて失敗します。 FFとChromeでは、サーブレットは正しく動作します。つまり、localhostと同じです。
手がかりはありますか?
私はまた、サーブレットコードの重要な部分の小さなスニペットを提供することができます。
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();
私は本当に問題は私のサーブレットコードまたはクラスタ化されたサーバ構成である場合は知っているが、私はありません2番目のチャンスを推測するのは正しいかもしれません...私のクラスタ構成で何が間違っているかも考えていますか?
クラスタ化されたJBossサーバーでアプリケーションをテストするときにSSL接続を使用していますか?はいの場合、それは説明かもしれません - 私は以前に同様の問題を抱えていました。 – simon
いいえ、両方のサーバー上のプレーンなHTTP – Raibaz
あなたの問題に関係ない観察:Content-Typeには「名前」パラメータはありません。また、ファイル名にカンマ、空白、ASCII以外の文字が含まれていると、Content-Dispositionのfilenameパラメータが失敗します。 –