日期:2014-05-17  浏览次数:20838 次

java文件下载时,总停在下载处不动了。请大侠帮忙
我下载是正常的,回到家,在家下载也是正常的,只有他们那一层的网下载总是停在下载页面,再也不动了,无反应。请大侠指教是什么原因?难道是网络原因。对网络不懂。
//根据文件类型获取MIME类型
String ContentType=bO.getContentType(oldfileName);
File f=new File(this.getSession().getServletContext().getRealPath(fileName));
try {
InputStream is = new FileInputStream(f);
response = ServletActionContext.getResponse();
response.setContentType(ContentType+"; charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename="
+ URLEncoder.encode(oldfileName,
"UTF-8"));
BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
log.error(e.getMessage(), e);
e.printStackTrace();
} finally {
try {
if (bos != null) {
bos.close();
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}

try {
if (bis != null) {
bis.close();
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}

------解决方案--------------------
加一个http header试试
response.setHeader("Content-Length", fileLength);
------解决方案--------------------
解决方法:   

  一、目标空间不足,请清理磁盘分区或另选择分区下载;  

  二、磁盘碎片过多,对目标盘进行一次碎片整理后重新下载;    
   方法:程序→附件→系统工具→磁盘碎片整理程序。

  三、第三方软件(如杀毒软件的实时监控、防火墙、3721上网助手等软件或插件)阻拦所致,关闭或卸载该类软件或插件后继续下载。

  对于软件引起的问题,如搞不清究竟是哪个程序引起冲突的话,你可以尝试关闭所有应用软件,并打开任务管理器,将不用的非系统进程杀死,再上网试着下载。

  四、清空IE临时文件夹和cookies后,重新下载。

  五、系统是XP SP2的,可能与SP2的增强安全性设置有关。  

  解决方法:Internet选项→安全→自定义级别→在“下载”栏各选项中全部选择“启用”。

 然后切换至“高级”选项卡,在“安全”栏中取消对“检查下载的程序的签名”复选框的选中,选中“允许运行或安装软件,即使签名无效”复选框。