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条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器