下载界面出现15秒之后抛异常 无法完成下载操作

问题描述:当下载窗口出现时 立即点下载可以下,但当先不点下载,等不到15秒,后台就会报异常,且此时点下载将无法下载

 

 

下载代码:

 

Java代码   收藏代码

  1. file = new File(path);  
  2. fin = new FileInputStream(file);  
  3. bin = new BufferedInputStream(fin);  
  4. os = response.getOutputStream();  
  5. bout = new BufferedOutputStream(os);  
  6. response.setHeader("Content-disposition",  
  7.                  "attachment;filename=" +  
  8.                  URLEncoder.encode(file.getName(), "utf-8"));  
  9. int count = 0;  
  10. byte[] buffer = new byte[8192];  
  11. while((count = bin.read(buffer)) != -1){  
  12.     bout.write(buffer, 0, count);  //异常指向的地方  
  13. }  
  14. bout.flush();  
  15. bin.close();  
  16. bout.close();  
  17. fin.close();  
  18. os.close();  


 

 

异常信息:

 

异常信息 写道
2011-3-7 10:41:20 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.io.IOException
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:696)
at org.apache.coyote.http11.InternalAprOutputBuffer$SocketOutputBuffer.doWrite(InternalAprOutputBuffer.java:726)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
at org.apache.coyote.http11.InternalAprOutputBuffer.doWrite(InternalAprOutputBuffer.java:532)
at org.apache.coyote.Response.doWrite(Response.java:560)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
at com.tool.UpDownloadHelper.download(UpDownloadHelper.java:178)

 

 

请问哪位大侠可以帮小弟解决下此问题 十分感谢!

 

 

楼主把缓存设小一点,把bout.flush(); 移到循环里面试试。

换个小一点的文件,bout和os不close,再试试看。
tomcat前面还有其他东西吗?会不会是连接时间过长或传输内容过大被服务器主动cut掉了?