`
jacobcookie
  • 浏览: 95063 次
社区版块
存档分类
最新评论

关于struts文件下载的一个问题

阅读更多
public class DownloadAction extends Action {

	//问题:下载文件时,后台老是抛出异常:
	//getOutputStream() has already been called for this response
	//不知这段代码哪里出了问题没有.谢谢大家的帮忙.
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		String oldFileName=request.getParameter("oldFileName");
		//弹出一个框框
		response.setContentType("text/html;charset=utf-8");
		//设置一个头,告诉浏览器有文件要下载  对中文要进行url编码
		try {
			response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(oldFileName,"utf-8"));
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}	
		
		String newFileName=request.getParameter("newFileName");	
		String fileAllPath=this.getServlet().getServletContext().getRealPath("/file")+"\\"+newFileName;
	
		InputStream is=null;
		OutputStream os=null;
		try {
			is=new FileInputStream(fileAllPath);
			os=response.getOutputStream();
			int len;
			byte[] buf=new byte[1024];
			while((len=is.read(buf))>0){
				os.write(buf,0,len);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if(null!=is){
					is.close();
				}
				if(null!=os){
					os.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return mapping.findForward("back");
	}
}

 

1
5
分享到:
评论
3 楼 jacobcookie 2013-11-25  
这个问题再次遇到过,好像是设置return null;解决的。
2 楼 jacobcookie 2013-03-21  
hottymg 写道
以前在jsp中用实现简单文件下载也遇到过这个问题 

最终加了
out.clear();
out = pageContext.pushBody()
;

解决的 你可以对应改改试试

新手见解

你这是写在jsp里的吧,我试了,没起作用啊,还是谢谢你.
1 楼 hottymg 2013-03-21  
以前在jsp中用实现简单文件下载也遇到过这个问题 

最终加了
out.clear();
out = pageContext.pushBody()
;

解决的 你可以对应改改试试

新手见解

相关推荐

    Struts的文件下载

    在Struts中,我们通常会创建一个Action类来处理文件下载的逻辑。这个Action类需要获取到待下载文件的路径或流,并设置适当的HTTP响应头,包括Content-Disposition(用于指定文件名)和Content-Type(用于标识文件...

    struts2实现文件下载功能

    通过以上步骤,我们可以使用Struts2框架实现一个完整的文件下载功能。在`FileDownloadDemo`项目中,你应该能看到这些组件的实现。这个示例项目可以帮助你更好地理解和实践Struts2的文件下载功能,进一步提升你在Web...

    struts2文件上传下载源代码

    1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该Action负责处理文件上传请求。Action的类需要继承自`ActionSupport`,并覆盖`execute()`方法,以便处理上传的文件。 2. **设置...

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。文件上传和下载是Web应用程序中的常见功能,对于用户交互和数据交换至关重要。本篇文章将详细探讨如何在Struts2框架下实现文件的上传与...

    struts1 文件上传 文件下载

    1. **Action**:创建一个处理文件下载的Action,需要获取要下载文件的服务器路径或流。 2. **设置响应头**:在Action中,通过Servlet的`response`对象设置响应头,包括`Content-Type`(文件类型)、`Content-...

    struts实现的文件上传下载功能

    在这个特定的场景中,我们关注的是如何使用Struts来实现文件的上传和下载功能。这个功能对于任何Web应用来说都是非常重要的,因为它允许用户交互地处理数据和资源。 首先,我们需要理解文件上传的基本流程。在...

    struts2_uploadify带进度条的多文件上传下载

    总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...

    struts实现文件上传和下载源代码

    在这个"struts实现文件上传和下载源代码"项目中,我们将会探讨如何使用Struts框架来实现在Web应用中进行文件的上传和下载功能,同时还会关注对于大文件(超过3MB)的处理策略。 1. **文件上传** 文件上传是Web应用...

    Struts2之struts2文件下载详解案例struts012

    通过定义一个Action类处理下载请求,配置Struts2的Action映射,以及在JSP页面上创建触发下载的链接,我们可以为用户提供安全、便捷的文件下载体验。这个案例对于理解和实现在Java web应用中处理文件下载的流程非常有...

    struts文件上传大小限制问题

    本篇文章将详细探讨Struts文件上传大小限制的问题。 首先,我们需要理解文件上传的基本流程。在Struts中,当用户通过表单提交文件时,数据会被封装到`ActionForm`对象中,然后由Struts的控制器组件处理。默认情况下...

    struts2实现文件下载实例源代码

    1. **配置Action类**:创建一个处理文件下载请求的Action类,该类通常会包含一个返回值表示下载操作的执行结果。在Action中,我们需要获取待下载文件的路径,并将其转换为InputStream。 ```java public class ...

    JavaEE Struts文件上传

    JavaEE Struts 文件上传是Web开发中的一个常见需求,它允许用户从客户端向服务器传输文件。Struts作为JavaEE框架的一部分,提供了强大的功能来处理这种交互。以下是对这个主题的详细解析。 首先,理解文件上传的...

    struts框架-文件上传下载

    1. 创建下载服务:在Struts框架中,通常通过一个Action来提供文件下载服务。Action需要根据请求参数找到待下载文件的路径,然后设置响应头,包括Content-Type(表示文件类型)和Content-Disposition(告诉浏览器以...

    struts与hibernate实现文件的上传与动态下载

    通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...

    struts2文件上传下载

    在Struts2中,你可以在Action类中定义一个方法,该方法读取服务器上的文件内容并设置响应头,以便浏览器能够正确地处理下载。例如,你可以设置`Content-Disposition`头来指定文件名,以及`Content-Type`头来指定文件...

    struts2文件上传和下载

    2. **Struts2 Action类中的文件处理**: 文件上传后,Struts2会将文件内容存储在一个临时位置。通常,你需要在Action类中创建一个`File`对象和一个`String`类型的属性,如`private File file; private String ...

    struts1和struts2分别实现文件上传下载功能

    对于文件下载,Struts1通常通过Action创建一个Servlet,该Servlet负责读取服务器上的文件并将其流化到响应中。用户发起下载请求时,Action会重定向到这个Servlet,Servlet读取文件并设置响应头,包括Content-...

    struts文件上传和下载

    3. **Struts2拦截器**:Struts2提供了一个名为`FileUploadInterceptor`的拦截器,用于处理文件上传请求。在配置文件中,需要将这个拦截器加入到Action的执行链中。 4. **文件存储**:上传的文件需要被存储在服务器...

    struts1 实现文件上传下载

    1. **创建下载Action**:创建一个新的Action类,定义一个方法来处理文件下载请求。 2. **读取文件**:在该方法中,通过文件路径读取要下载的文件内容。可以使用`java.io.File`和`java.io.FileInputStream`等类。 3...

    struts2.1.3 简单下载文件

    在本程序中,我们关注的是如何使用Struts2.1.3实现一个简单的文件下载功能。 首先,我们需要在项目中配置Struts2的核心库。这通常包括添加struts2-core.jar、struts2-convention-plugin.jar等依赖到项目的类路径中...

Global site tag (gtag.js) - Google Analytics