`
lever0066
  • 浏览: 54748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2下载文件功能(边下载边打包)

阅读更多
转:http://cloudyxuq.iteye.com/blog/1532631

多个文件,目录不同,通过条件查询如何进行打包下载呢?

1.利用ZipEntry进i行文件的压缩

2.前台jsp传入需要打包下载的一系列的文件的路径(数组类型)。因为是在checkBox中,表单提交会自动将其定义成数组。只需要将name名称命名成后台需要得到的路径数组名称

比如前台

downLoadZip.jsp

--------checkBox处代码-------------------------------

利用iterator迭代出来的filePath

<input type="checkbox" name="downLoadPaths"
value='<s:property value="filePath"/>'/>








后台Action

private String[] downLoadPaths;

对downLoadPaths进行遍历,打包。。。。

代码:
/**
 * 批量下载(压缩成zip,然后下载)。不创建临时文件
 * 
 * @author Cloudy
 * 
 */
@Namespace("xxxxxx")
public class DownZipAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 传递一个List<String>()对象传值路径合集
	private String[] downLoadPaths;
	private OutputStream res;
	private ZipOutputStream zos;
	private String outPath;

	// Action主方法
	@Action(value="DownLoadZip",results={@Result(name="nodata",location="/error.jsp"),
			@Result(name="success",location="xxxx.jsp")})
	public String downLoadZip() throws Exception {
		// 有数据可以下载
		if (downLoadPaths.length != 0) {
			// 进行预处理
			preProcess();
		} else {
			// 没有文件可以下载,返回nodata
			return "nodata";
		}
		// 处理
		writeZip(downLoadPaths);
		// 后处理关闭流
		afterProcess();
		return SUCCESS;
	}

	// 压缩处理
	public void writeZip(String[] downLoadPaths) throws IOException {
		byte[] buf = new byte[8192];
		int len;
		
		for (String filename : downLoadPaths) {
			File file = new File(filename);
			if (!file.isFile())
				continue;
			ZipEntry ze = new ZipEntry(file.getName()); //apache jar的ZipEntry
			zos.putNextEntry(ze);
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
			while ((len = bis.read(buf)) > 0) {
				zos.write(buf, 0, len);
			}
			bis.close();
			zos.closeEntry();
		}
	}

	// 预处理
	public void preProcess() throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse();
		res = response.getOutputStream();
		// 清空输出流(在迅雷下载不会出现一长窜)
		response.reset();
		// 设定输出文件头
		response.setHeader("Content-Disposition", "attachment;filename=document.zip");
		response.setContentType("application/zip");
		zos = new ZipOutputStream(res);
	}

	// 后处理
	public void afterProcess() throws IOException {

		zos.close();
		res.close();
	}

	public OutputStream getRes() {
		return res;
	}

	public void setRes(OutputStream res) {
		this.res = res;
	}

	public ZipOutputStream getZos() {
		return zos;
	}

	public void setZos(ZipOutputStream zos) {
		this.zos = zos;
	}

	public String[] getDownLoadPaths() {
		return downLoadPaths;
	}

	public void setDownLoadPaths(String[] downLoadPaths) {
		this.downLoadPaths = downLoadPaths;
	}

	public String getOutPath() {
		return outPath;
	}

	public void setOutPath(String outPath) {
		this.outPath = outPath;
	}

}


struts2文件下载错误提示的解决方法 .
http://blog.csdn.net/java20100406/article/details/6439698
分享到:
评论

相关推荐

    jaserreport结合struts 的打印实例源码

    结合struts做的jasperreport打印实例,在jsp上实现翻页功能,pdf,excel,word转换功能以及applet打印和预览功能.这是eclipse工程打包文件,下载后解压通过eclipse进行部署,供入门者参考学习使用.

    PHPCMS 文件管理器(原Longbill文件管理器) v4.03

    可以远程管理服务器上的文件,包括上传,下载,新建,编辑,复制,粘贴,删除,远程下载等文件操作。 2.采用 PHP + AJAX 的方式构建。客户端采用缓存技术,不仅反应迅速,而且能减轻服务器的负担。 3.实现了远程 ZIP...

    基于SSH框架的学生成绩管理系统设计源码

    项目共包含272个文件,其中GIF图片文件117个,Java源代码文件35个,PNG图片文件34个,JSP页面文件31个,JPEG图片文件11个,CSS样式文件10个,JavaScript源代码文件9个,JAR打包文件7个,Markdown文档4个,以及XML...

    Eclipse 插件集合

    它提供了struts-config.xml配置文件的图形管理界面。 12.SQLExplorer 可以通过JDBC访问几乎任何一种数据库。同时也支持像Hibernate这样的工具访问数据库。 13.Call Hierarchy 显示一个方法的调用层次(被哪些方法...

    JavaEE/Oracle课设-人力资源管理系统

    一个用JSP+Spring+Hibernate+Struts2做的简单的人力资源管理系统有员工、部门、职位管理,能实现基本的增删改查功能。做JavaEE/Oracle/前端课设时可以拿来参考。 项目是用MyEclipse做的,在Tomcat8.5上正常运行。 ...

    FirstJava2完全教材

    2.Struts action向导:根据jsp文件中的表单内容自动生成的form类和action类的代码.并修改struts-config.xml配置文件. 编辑辅助方式比Eclipse和Jbuild更高效,使简单, 当你使用FirstJava2你会发现,它速度很快,功能...

    《MyEclipse 6 Java 开发中文教程》前10章

    9.5.7 练习:如何用Hibernate+Struts实现修改用户信息功能? 196 9.6 小结 197 9.7 参考资料 197 第十章 开发Spring应用 198 10.1 简介 198 10.1.1 Spring简介 198 10.1.2 MyEclipse的Spring开发功能简介 200 10.2 ...

    SSH(Struts2.2.1+Hibernate3.6+Spring3.0.5)+json框架包

    已经完全打包制作的SSH框架,手动搭建,亲测可用!并且已经包含了jquery,json等插件,可直接使用Ajax功能!由于文件大小限制,jar包中删除了hibernate的核心jar,需要大家自己下个添加,其余jar包已经完整!测试...

    完全免费的Java/jsp开发编辑工具FirstJava2

    2.Struts action向导:根据jsp文件中的表单内容自动生成的form类和action类的代码. 并修改struts-config.xml配置文件. 这个FirstJava2开发工具编辑辅助方式比Eclipse和Jbuild更高效,使简单, 自己使用Eclipse和Jbuild...

    Lerx 网站内容管理系统 v5.5.zip

    无需通过浏览器选取模板、资源文件上传,无需通过浏览器的下载功能获得模板再进行导入。在用户确定上传后,网站后台会对用户的模板、使用到的资源文件(包括图片、Js文件、CSS文件等)进行打包压缩,并进行静默上传...

    ExtJS Web应用程序开发指南(10-15)完毕

    由于容量超过了上传的容量,所以我分成2次打包上传了。。。 本书从ExtJS实现的基本功能开始讲解RIA Web开发,详细讲解ExtJS的基本功能、常用的表单、面板和布局、常见的工具类与函数,以及ExtJS对事件的响应。本书...

    ExtJS Web应用程序开发指南(1-10)

    由于容量超过了上传的容量,所以我分成2次打包上传了。。。 本书从ExtJS实现的基本功能开始讲解RIA Web开发,详细讲解ExtJS的基本功能、常用的表单、面板和布局、常见的工具类与函数,以及ExtJS对事件的响应。本书...

    基于ssh架构的学生信息管理系统

    基于ssh架构的学生信息管理系统,内打包的是个完整的工程,直接导入myeclipse即可。管理员登陆,采用struts titles 布局页面。可输入关键字查询学生,列出全部学生信息,增加,删除,修改,查询,分页等等,各个小...

    iuhyiuhkjh908u0980

    1) 手工安装 从这里下载你想要的版本,在任何你想的地方解开下载的zip文件,并复制ivy的jar文件到你的ant的lib目录(ANT_HOME/lib). 如果你使用ant 1.6.0或者更高,你可以简单的到src/example/hello-ivy 目录并运行...

    123123123123123

    双击《小型超市管理系统》“打包发布”文件夹中的BAT文件即可运行程序(注意必须已安装JDK 1.5,并检查Path环境变量中应已经有JDK路径)。 ... www.winu.cn/htmls/553/114/ - 27k - 网页快照 - 类似网页 JavaJAVA源码:...

    JAVA项目开发全程实录(含电子书和所有源代码)

    《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL ...

    Maven2 的新特性.7z

    在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。 • src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个...

    ssh+extjs设计的订单管理系统

    该系统结合struts+hibernate+spring使用四层架构设计, 采用extjs设计界面,实现用户登录及grid的搜索显示功能, 该系统没有完全开发完成, 实现了部分功能, 仅供参考者学习一些项目的设计思路和extjs的使用技巧....

Global site tag (gtag.js) - Google Analytics