文件下载Action
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadFileAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private static String ROOTDIR = ServletActionContext.getServletContext()
.getRealPath("/userfiles/");// 项目的根目录下的userfiles文件下,大家可以自己定义
private String downFileName;
private InputStream fileInputStream;
public InputStream getFileInputStream() {// 下载文件的输出流
return fileInputStream;
}
public String execute() throws Exception {
fileInputStream = new FileInputStream(new File(ROOTDIR, downFileName));
return SUCCESS;
}
public String getDownFileName() {
return downFileName;
}
public void setDownFileName(String downFileName) {
this.downFileName = downFileName;
}
}
struts.xml
<include file="struts-default.xml" />
<!--
Struts2常量配置 struts.devMode:开发模式,修改配置信息可以不必重新部署服务器
struts.i18n.encoding:国际化编码
struts.ognl.allowStaticMethodAccess:允许ognl访问静态方法
struts.ogjectFactory:将当前Struts2的Action交给Spring管理
-->
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.custom.i18n.resources" value="globalMessages" />
<constant name="struts.action.extension" value="do,action" />
<!--定义全局变量-->
<package name="global" namespace="/" extends="struts-default">
<global-results>
<result name="login">/login.jsp</result>
<result name="error">/WEB-INF/error.jsp</result>
</global-results>
<!-- 全局返回结果在上,全局异常定义在下,不要弄反了。 -->
<global-exception-mappings>
<exception-mapping result="error" exception="Exception"></exception-mapping>
</global-exception-mappings>
</package>
<package name="ajax" namespace="/ajax" extends="global">
<!-- 下载文件的Action定义,我是用的是SSH,所以downloadBean是取自Spring中 -->
<action name="download" class="downloadBean">
<!-- 设置文件名参数,由页面上传入 -->
<param name="downFileName"></param>
<result name="success" type="stream">
<!-- 下载文件类型定义 -->
<param name="contentType">application/octet-stream</param>
<!-- 下载文件处理方法 -->
<param name="contentDisposition">
attachment;filename="${downFileName}"
</param>
<!-- 下载文件输出流定义 getFileInputStream()-->
<param name="inputName">fileInputStream</param>
</result>
</action>
</package>
访问 ajax/download.do?downFileName=已有的文件名
注意jar包要使用最新的。
参考资料
http://johnson2132.iteye.com/blog/720761
http://www.mkyong.com/struts2/struts-2-download-file-example/
分享到:
相关推荐
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在这个“struts2文件下载实例”中,我们看到如何使用Struts2实现从数据库获取文件信息并在页面上展示,以及提供一个链接让用户能够下载这些文件。以下是对这个实例的详细解释: 1. **数据库操作**: - 首先,`Find...
在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...
在Struts2中,文件下载是常见的功能,尤其在处理用户请求获取服务器上的文件时。本示例提供了Struts2实现文件下载的源码,旨在帮助开发者快速理解和实现这一功能。 首先,我们需要理解Struts2文件下载的基本流程: ...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
在Struts2中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...
在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...
在Struts2中处理文件下载是常见的需求,尤其是在处理用户请求获取服务器上的静态资源或者上传文件的下载时。本资源包提供的源码详细演示了三种不同的文件下载方法。 1. **超链接下载** 超链接下载是最直观且简单的...
通过覆写StreamResult的方法 解决struts2文件下载点击取消服务器报错解
在下载并解压"struts2所有jar包"后,开发者需要将lib目录下的所有jar文件添加到项目构建路径中,确保运行时可以找到所有依赖。对于Maven或Gradle用户,可以通过在pom.xml或build.gradle文件中指定相应的依赖项,实现...