blackartanan 2011-03-08 10:55
浏览 324
已采纳

下载界面出现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)

 

 

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

 

 

  • 写回答

2条回答 默认 最新

  • sunnywolf1010 2011-03-08 11:26
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型