1.写一个Action,在DownloadAction extends ActionSuport
package com.jsu.struts2.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownloadAction extends ActionSupport{ private List<String> fileNames; private String fname; private InputStream downFile;//传给用户的是一个文件流 /*获得文件夹中的所有文件名称*/ public String findAll(){ String path =ServletActionContext.getServletContext().getRealPath("/upload"); File file = new File(path); File [] files = file.listFiles(); fileNames = new ArrayList<String>(); for (File f:files) { fileNames.add(f.getName()); } return "list"; } /*执行下载操作*/ @Override public String execute() { //获得文件的路径 String path =ServletActionContext.getServletContext().getRealPath("/upload"); System.out.println(path); String fileRealPath = path+"\\"+fname; System.out.println(fileRealPath); try { downFile = new FileInputStream(fileRealPath); } catch (FileNotFoundException e) { e.printStackTrace(); } return "success"; } public List<String> getFileNames() { return fileNames; } public void setFileNames(List<String> fileNames) { this.fileNames = fileNames; } public String getFname() { try { fname = new String(fname.getBytes(),"ISO-8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return fname; } public void setFname(String fname) { try { //这里编码格式为gbk,在jsp页面的头信息也要设置为gbk fname=new String(fname.getBytes("ISO-8859-1"),"gbk"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } this.fname = fname; } public InputStream getDownFile() { return downFile; } public void setDownFile(InputStream downFile) { this.downFile = downFile; } }
2.在download.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <center> <h1>文件下载</h1> <s:iterator var="file" value="fileNames"> <a href="down?fname=<s:property value="#file"></s:property>"> <s:property value="#file"></s:property></a> </s:iterator> </center> </body> </html>
3.在struts.xml文件配置
<!-- 文件下载 --> <action name="down" class="com.jsu.struts2.action.DownloadAction"> <result name="list">/download.jsp</result> <!-- 如果Struts2.0框架以流的形式反馈用户的时候,type="stream" --> <result name="success" type="stream"> <!-- 指明那个属性是以流的形式反馈 --> <param name="inputName">downFile</param> <!-- 设置缓存区 --> <param name="buffSize">1024</param> <!-- 设置浏览器的打开方式:inline:打开直接显示; attachment:浏览器以附件的形式进行存储 filename:文件的名称 --> <param name="contentDisposition">attachment;filename=${fname}</param> </result> </action>
4.地址栏访问:http://localhost:8080/struts2_04/down!findAll.action
注意:upload文件夹下面一定要有文件。
发表评论
-
struts2day06 自定义结果
2012-07-16 12:14 638类implements Result接口 或者 extends ... -
struts2day06 Struts2.0的result
2012-07-16 12:01 846Struts2.0的result Action ... -
struts2day06学习笔记
2012-07-16 10:55 8231.new String(xxx.getBytes(),&qu ... -
struts2day05异常处理
2012-07-13 23:13 795Struts2.0的异常处理机制 1.什么是异常?软件在 ... -
Struts2day05学习笔记
2012-07-13 22:19 6331.自定义拦截器 1.im ... -
Struts2day04Struts2.0文件的上传
2012-07-13 08:20 6221、在服务器端提供一个文件夹存放提交的文件,upload文件夹 ... -
Struts2day04Struts2.0实现阻止表单重复提交
2012-07-12 21:01 5821.使用叫做token的拦截器,在表单中加入<s:tok ... -
Struts2day04对Action的方法进行过滤拦截
2012-07-12 20:38 17451.写一个Action类 UserManagerAction ... -
Struts2day04判断用户是否登录
2012-07-12 19:37 8251.在拦截器中获得用户登录的session 在LoginC ... -
Struts2day04测试程序的执行效率,拦截器栈,在Action中覆盖拦截器的属性值
2012-07-12 18:58 11491.在LoginAction.java中,extends Ac ... -
Struts2学习笔记day04
2012-07-12 00:31 5921.自定义类型转换 1.写一个类 extends S ... -
Struts2day03Struts2.0提供的数据格式校验
2012-07-11 21:52 687Struts2.0提供的数据格式校验 js校验:存在被 ... -
Struts2day03Struts2.0国际化
2012-07-11 21:09 717Struts2.0国际化 B/S结构中为网页提供多国 ... -
Struts2day03OGNL自定义类型转换
2012-07-11 20:47 755Struts2.0框架不能够或者不能完整的进行自动类型转换 ... -
Struts2学习笔记day03
2012-07-11 19:09 9181.值栈:ValueStack,存储数 ... -
Struts2day02多个对象提交
2012-07-10 07:15 1153在listUser.jsp页面 <%@ page la ... -
Struts2day02表单标签
2012-07-10 07:15 6401.在struts2Form.jsp中 <%@ ... -
struts2day02访问ValueStack中的数据以及访问Context中的对象
2012-07-10 07:14 10221.在show.jsp页面 <%@ page lang ... -
Struts2day02动态方法调用
2012-07-10 07:14 6221.在opt.jsp页面 <%@ page langu ... -
Struts2day02使用通配符调用指定的方法
2012-07-10 07:14 7011.在opt.jsp页面 <%@ page langu ...
相关推荐
struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0
struts-2.0 jarstruts-2.0 jarstruts-2.0 jarstruts-2.0 jar
Struts2.0视频教程,struts2.0中文教程,Struts2.0视频教程,struts2.0中文教程,
JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...
清晰的介绍了Struts 2.0框架的工作流程,Action线程安全,程序入口,配置文件。
sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0
struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验
struts-2.0 jarstruts-2.0 jarstruts-2.0 jarstruts-2.0 jar
Struts2.0学习系列 以及 Struts2.0安装包 WORD文档里包含图片和文字,讲解非常详细, 一步一步的教你.
04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现...
传智2016框架视频配套讲义----struts2_day04讲义.pdf ,需要的下载了
struts1.x和struts2.0电子书
Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 Struts 2.0的Action讲解 在Struts 2.0中国际化(i18n)您的应用程序 转换器(Converter)——Struts 2.0中的魔术师 在Struts ...
struts-2.0.dtdstruts.xmlstruts-2.0.dtd
struts2.0上传文件 struts2.0上传文件 struts2.0上传文件 struts2.0上传文件
学习struts2时不可缺少的资源包,对于深入学习和准确掌握struts非常重要!
Struts2.0入门培训,Struts2.0的快速教程
struts2.0jar包以及struts2.0与spring的整合jar包
Struts2.0 文件上传与下载全解析Struts2.0 文件上传与下载全解析
struts2-core-2.0.11.2.jar