struts2文件下载
文件下载Actionimport 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/
页:
[1]