当前位置: 技术问答>java相关
还是下载问题
来源: 互联网 发布时间:2015-05-20
本文导语: 经过大家的指点,我能用servlet把文件做成流下载了。但是又有了新的问题。 response.setHeader("Content-Disposition","attachment;filename=025.mp3"); response.setContentType("application/octet-stream"); ServletOutputStream out = response.getOutpu...
经过大家的指点,我能用servlet把文件做成流下载了。但是又有了新的问题。
response.setHeader("Content-Disposition","attachment;filename=025.mp3");
response.setContentType("application/octet-stream");
ServletOutputStream out = response.getOutputStream();
java.io.FileInputStream fis = null;
try
{
fis = new java.io.FileInputStream( fileName );
byte[] buf = new byte[4 * 1024];
int bytesRead;
while ((bytesRead = fis.read(buf)) != -1)
{
out.write(buf, 0, bytesRead);
}
}
finally
{
if (fis != null) fis.close();
}
这样写是不是还缺一点东西?因为出现下载对话框以后,选择把文件保存到磁盘,确定,出现另存为对话框,这时候如果不下载而做取消工作,重复两次以后好象就会阻塞,再也下不了了,什么都弹不出来,救命!
response.setHeader("Content-Disposition","attachment;filename=025.mp3");
response.setContentType("application/octet-stream");
ServletOutputStream out = response.getOutputStream();
java.io.FileInputStream fis = null;
try
{
fis = new java.io.FileInputStream( fileName );
byte[] buf = new byte[4 * 1024];
int bytesRead;
while ((bytesRead = fis.read(buf)) != -1)
{
out.write(buf, 0, bytesRead);
}
}
finally
{
if (fis != null) fis.close();
}
这样写是不是还缺一点东西?因为出现下载对话框以后,选择把文件保存到磁盘,确定,出现另存为对话框,这时候如果不下载而做取消工作,重复两次以后好象就会阻塞,再也下不了了,什么都弹不出来,救命!
|
确实是IE5的Bug,见微软KB第Q266305号:http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q266305
|
这个output流可不可以flush()和close()呢,你可是已经请求了啊!