`
fireflyjava
  • 浏览: 187928 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用OutputStream下载大文件时,下载过程中取消下载后,websphere6.0会死掉,而tomcat不会

    博客分类:
  • Java
阅读更多
用OutputStream下载大文件时,下载过程中,点取消下载后,websphere6.0会死掉
而tomcat不会,可以捕捉到异常!不过异常也是null!
不知道是不是websphere本身的Bug

下面是测试的Servelet

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownServlet extends HttpServlet {

	
	public DownServlet() {
		super();
	}	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		processRequest(request,response);
	}	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		processRequest(request,response);
	}
	public void processRequest(HttpServletRequest request,
			HttpServletResponse response) throws IOException {
		String path = request.getParameter("path");
		File file = new File(path);
		response.setContentType("application/x-msdownload");
		response.setContentLength((int) file.length());
		response.setHeader("Content-Disposition",
				"attachment;filename=xxxf.cvs");
		response.setHeader("windows-Target", "_blank");
		BufferedInputStream input = new BufferedInputStream(new FileInputStream(file));		
		try {

			byte buffBytes[] = new byte[1024];
			int allLength = 0;
			System.out.println("*********************"+path);
			System.out.println("开始下载");
			OutputStream out = response.getOutputStream();
			System.out.println("获得流之前");
			int read=0;
			while ((read=input.read(buffBytes))!=-1) {				
				allLength += read;
				out.write(buffBytes, 0, read);
			}
			System.out.println("获得流之后"+allLength);
			out.flush();
			out.close();
			input.close();	
			System.out.println("正常关闭文件流");
		} catch (IOException e) {
			System.out.println("取消下载"+e.getMessage());			
		} 
		System.out.println("********************");
	}	

}
分享到:
评论
1 楼 nhpm 2007-09-04  
 
你好厉害啊!!!!

相关推荐

    从Tomcat服务器下载文件

    在从Tomcat服务器下载文件时,如果文件是二进制格式,通常会选择使用字节流,例如FileInputStream和ServletOutputStream。 下载到SD卡的过程则涉及到Android系统的文件操作。在Android设备上,SD卡通常被用作外部...

    精讲RestTemplate文件上传下载与大文件流式下载.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Spring框架中的`RestTemplate`进行文件上传、普通文件下载及大文件的流式下载。 ### 一、文件上传 在进行文件上传时,通常涉及到以下几个步骤...

    android 文件下载和断点续传demo

    在Android平台上,文件下载和断点续传是移动应用开发中的常见需求,特别是在处理大文件时,用户可能因网络中断或其他原因需要暂停或重启下载。断点续传技术允许应用程序在下载过程中记住已下载的部分,当下载中断后...

    Android 下载文件Demo

    在Android开发中,下载文件是一项常见的任务,尤其在构建应用时需要从服务器获取资源或更新数据。本"Android 下载文件Demo"旨在演示如何利用字节流进行文件下载操作。在Java和Android中,输入输出流(IO流)是处理...

    JSP实现文件上传与下载.pdf

    1. 在实现JSP文件上传和下载时,需要注意文件上传的大小限制,避免上传大文件引发的服务器崩溃。 2. 在实现JSP文件上传和下载时,需要注意文件的安全性,避免恶意攻击和数据泄露。 3. 在实现JSP文件上传和下载时,...

    C# 四种实现文件下载

    使用 TransmitFile 可以避免使用 Response.BinaryWrite 下载大文件时可能出现的 Aspnet_wp.exe 进程回收问题。 在 ASP.NET 中,可以使用 Response 对象的 TransmitFile 方法来下载文件。下面是一个使用 ...

    android:下载文件(断点续传)并解压

    在Android平台上,实现文件下载(特别是大文件)和断点续传是一项常见的需求,这能够提高用户体验,因为用户不必从头开始重新下载由于网络中断而未完成的文件。同时,解压缩文件也是移动应用中常见的情景,比如安装...

    用struts2实现的文件上传与下载

    2. 表单提交时,Struts2的拦截器会捕获这个请求,将文件内容封装到一个`FileItem`对象中。 3. 在对应的UploadAction中,我们需要解析`FileItem`对象,将文件保存到服务器指定的目录,这里指明为"upload"文件夹。在...

    Spring Boot中使用Java实现文件批量下载与压缩功能

    ### Spring Boot中使用Java实现文件批量下载与压缩功能 #### 一、背景介绍 在Web应用开发中,经常需要提供给用户批量下载的功能,尤其是在文件管理或者文档分享等场景下。传统的做法是一次只下载一个文件,这不仅...

    Java文件下载的几种方式

    对于大文件的下载,传统的下载方式可能会因为网络中断或其他原因导致下载失败。支持断点续传的下载方式可以有效解决这一问题,它允许在下载中断后继续从上次停止的位置开始下载。 实现断点续传通常需要记录已下载的...

    java+jsp 文件下载(服务器上的文件)

    在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...

    从网络下载视频文件保存到本地

    下载文件时,我们需要创建一个File对象,指定本地存储的位置,通常是SD卡(外部存储)。Android提供了`Environment.getExternalStorageDirectory()`方法来获取SD卡根目录。然后,我们可以创建一个输出流...

    android通过Service进行文件下载,后台下载

    在Android应用开发中,Service是一种重要的组件,它允许应用程序在后台执行长时间运行的操作,而无需与用户界面交互。本教程将深入探讨如何利用Service组件在Android设备上实现文件的后台下载,确保即使用户退出应用...

    实现批量下载文件

    7. **性能优化**:为了提高性能,可以考虑使用异步操作,特别是在处理大量文件时。利用ASP.NET的async/await特性,可以避免阻塞线程池资源。 8. **错误处理**:添加适当的异常处理机制,当文件不存在或者读取过程中...

    C#实现多线程下载文件

    在IT行业中,多线程是提高程序性能和利用系统资源的有效手段,特别是在处理I/O密集型任务如文件下载时。C#作为一种强大的编程语言,提供了丰富的多线程支持,使得开发者能够轻松地创建并管理多个执行线程。本文将...

    通过IO流把文件传到前端并下载.zip

    在传输文件时,我们通常会使用InputStream来读取文件,然后通过Servlet的OutputStream将数据发送到客户端。 2. **Servlet**: Servlet是Java Web开发的核心组件,用于处理HTTP请求并生成响应。在本例中,`...

    用Jsmartcom实现文件的上传、下载

    3. **启动Tomcat**:完成上述步骤后,重启Tomcat服务器,此时Jsmartcom组件已准备就绪,可在`webapps/jspsmartupload`目录下的JSP文件中使用。 4. **全局部署**:如果你希望所有Web应用程序都能够使用Jsmartcom,...

    asp.net(C#)限速下载隐藏文件真实名称和地址下载的例子

    在ASP.NET(C#)开发中,有时我们需要对网站上的文件下载功能进行控制,例如限制下载速度,隐藏文件的真实路径和名称,以保护服务器资源的安全。本示例将讲解如何实现这些功能,主要针对VS2005(.NET Framework 2.0)...

    基于Java文件输入输出流实现文件上传下载功能

    本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件上传 文件上传是指客户端将文件传输到服务器端的...

Global site tag (gtag.js) - Google Analytics