`

文件下载取消保存下载异常

阅读更多
Caused by: java.net.SocketException: Connection reset by peer: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:737)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
	at org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:299)
	at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:963)
	at org.apache.coyote.Response.action(Response.java:183)
	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:314)
	... 26 more
2012-12-14 9:22:13 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        ......................

下载代码: 
 
            os = response.getOutputStream();  
            is = new FileInputStream(new File("download.wmv"));
             
            response.reset();  
            String fileName = "download.wmv"
            response.setHeader("Content-disposition", "attachment;filename =" + new String(fileName.getBytes("GBK"),"ISO8859-1")); 
            
            int length= 0;  
            byte[] buffer = new byte[1024];  
            while((length= is.read(buffer,0,1024)) != -1){  
                os.write(buffer, 0, length);  
            }
            os.flush();
            is.close();
            os.close();


异常现状:点击下载,不保存文件,直接点取消,IE 下取消上面异常。
解决方案:os.flush(); 代码位置移到 byte[] buffer = new byte[1024]; 缓冲write(...)之前
分享到:
评论

相关推荐

    Struts2下载文件点击取消出现的异常解决办法(含demo)

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...

    vc++使用libcurl下载文件,支持断点续传,支持多文件下载

    这需要读取并保存文件的元数据,特别是文件的大小和已下载的字节数。在VC++中,可以使用`fseek()`和`ftell()`函数来获取和设置文件指针的位置。 对于多文件下载,可以使用libcurl的多接口(`curl_multi_init()`和`...

    C# Winform 下载文件

    在C# Winform环境下开发文件下载功能,主要是利用.NET Framework提供的System.Net命名空间中的WebClient类。这个类为开发者提供了一种简单的方式来处理HTTP、FTP等网络协议的交互,包括下载文件。本篇将深入探讨如何...

    多线程分别下载文件

    可以使用try-catch-finally结构捕获下载过程中的异常,提供重试或取消下载的选项。同时,为每个下载任务保存一个标识,如文件URL和当前下载位置,以便在需要时恢复下载。 此外,文件存储也是多线程下载的一个关键...

    VS2017下载的文件流并保存的demo

    本示例着重于C#中的文件流操作,特别是在WPF(Windows Presentation Foundation)应用程序中如何处理网络下载并保存文件的流程。下面我们将详细探讨这一主题。 1. **文件流**: 文件流是.NET Framework提供的基础...

    C# 大文件下载 断点续传

    - 导出任务时,将文件的URL、当前状态(包括已下载的块和位置)、以及其他相关参数保存到文件或XML格式的数据。 - 导入时,解析这些数据,创建新的下载任务并启动。 6. **错误处理和重试机制** - 由于网络问题,...

    文件上传和下载的常见测试点

    * 取消下载是否会纪录下载次数 3. 下载次数是否被正确记录 4. 后台没有发布的文件是否在前台可以找到并下载 5. 后台设置了下载权限的文件是否可以被正确看到、是否可以下载 上传测试点 1. 上传文件名测试,检查不...

    用Visual Csharp实现文件下载.rar_c# webclient_csharp 下载_下载_文件下载_文件传输

    在.NET框架中,C#提供了一种简单的方式来处理网络数据传输,特别是在文件下载方面。`WebClient`类是System.Net命名空间的一...同时,可以利用事件处理程序监控下载进度和处理异常,以确保文件下载的可靠性和用户体验。

    Android实现基于Http协议的文件下载

    7. **异常处理**:在文件下载过程中,可能会遇到网络错误、内存不足、磁盘空间不足等各种问题,需要适当的异常处理机制来捕获这些问题并采取相应措施,例如重试、暂停或取消下载。 综上所述,实现Android基于Http...

    文件上传下载需要的jar包 java文件上传下载

    9. **进度反馈与取消操作**: 对于用户体验,提供文件上传和下载的进度反馈以及取消操作的能力也是很重要的,这可以通过监听上传或下载的进度并更新UI来实现。 10. **文件存储策略**: 选择合适的文件存储策略,如...

    如何设置Word2021文档“自动保存”.docx

    如果是新建文档,系统会自动弹出“另存为”对话框,不管您是按“保存”还是“取消”按钮,您不保存文档,就退不出 Word2021。当然,你强行关机还是可以退出 Word 的,但这时 Word2021 会自动恢复你没有存盘的文档...

    Android文件多线程下载

    1. 记录进度:在下载过程中,系统会定期保存当前下载进度,包括已下载的文件大小、每个线程的起始位置等信息。 2. 检测文件完整性:在重新开始下载前,检查本地已有文件是否完整,如果发现不完整,就从上次中断的...

    word文档无法保存.docx

    在使用Microsoft Word 2007时,遇到“文件发生错误”的提示,导致无法保存文档,这通常是由于软件内部的问题、模板损坏、第三方插件冲突或系统设置异常等因素引起。以下是一些解决此问题的常见步骤和建议: 1. **...

    Android利用Http下载文件

    实际开发中,还可以结合Android的Notification来展示下载状态,提供暂停、恢复和取消下载的功能,以及优化网络连接和文件读写效率。通过不断学习和实践,你可以构建出稳定、高效、用户体验良好的文件下载模块。

    c#异步多线程http文件分块断点续传下载工具

    在C#中,我们可以通过保存已下载文件的大小以及服务器返回的响应头信息来实现这一功能。 接着,我们来看分块下载。为了加快大文件的下载速度,可以将文件分割成多个小块,然后并行地从服务器下载。每个线程负责一个...

    android 下载网络文件

    下载的数据需要保存到本地文件系统中。Android提供了`java.io`和`android.os.Environment`类来操作文件。首先,创建一个输出流来写入数据,然后通过循环读取输入流中的数据并写入输出流,最后关闭流。例如: - ...

    Wpf 文件下载代码

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)应用程序中实现文件下载功能,特别是在使用WebClient类的情况下。WPF是.NET Framework的一部分,它提供了丰富的用户界面框架,用于构建桌面...

    C#多线程批量下载

    5. 文件保存:需要正确地保存下载的文件,避免覆盖已有文件,或者根据文件类型选择合适的保存位置。 综上所述,"C#多线程批量下载"是一个涵盖C#编程、多线程技术、FTP文件传输以及批量操作等多个知识点的项目,其...

    android断点续传_多线程下载demo

    实现断点续传的关键在于保存已下载文件的部分状态,包括已下载的字节数、文件总大小以及当前的下载位置。在Android中,我们通常会使用`SharedPreferences`或者数据库来存储这些信息。 多线程下载则是通过将文件分成...

    HttpSocket文件下载类 HttpSocketDownload

    3. 监听下载进度,根据需要调用暂停、恢复或取消下载的方法。 4. 下载完成后,检查文件完整性,确保数据无误。 五、注意事项 1. 网络环境:确保网络连接稳定,避免因网络中断导致的下载失败。 2. 文件权限:确保...

Global site tag (gtag.js) - Google Analytics