我有一个 servlet,它通过将 HTTP Content-Type 设置为“ application/zip
”,将 Content-Disposition 设置为“ attachment
”并将其写入响应来发送文件OutputStream
;它在我的本地应用程序服务器上部署时表现正确,使浏览器显示弹出窗口以选择是否下载文件。
但是,当部署在集群的 jboss 服务器上时,IE 在整个传输过程中请求文件信息的速度为 0%,然后失败并显示一条错误消息,指出文件不可下载:更奇怪的是,使用 FF 和 Chrome servlet 行为正确,即与本地主机上的方式相同。
有什么线索吗?
我还可以提供一小段 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();
我真的不知道问题出在我的 servlet 代码还是集群服务器配置中,但我开始猜测第二次机会可能是正确的……关于我的集群配置中可能出现什么问题的任何想法?