转:
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
分享到:
相关推荐
结合struts做的jasperreport打印实例,在jsp上实现翻页功能,pdf,excel,word转换功能以及applet打印和预览功能.这是eclipse工程打包文件,下载后解压通过eclipse进行部署,供入门者参考学习使用.
可以远程管理服务器上的文件,包括上传,下载,新建,编辑,复制,粘贴,删除,远程下载等文件操作。 2.采用 PHP + AJAX 的方式构建。客户端采用缓存技术,不仅反应迅速,而且能减轻服务器的负担。 3.实现了远程 ZIP...
项目共包含272个文件,其中GIF图片文件117个,Java源代码文件35个,PNG图片文件34个,JSP页面文件31个,JPEG图片文件11个,CSS样式文件10个,JavaScript源代码文件9个,JAR打包文件7个,Markdown文档4个,以及XML...
它提供了struts-config.xml配置文件的图形管理界面。 12.SQLExplorer 可以通过JDBC访问几乎任何一种数据库。同时也支持像Hibernate这样的工具访问数据库。 13.Call Hierarchy 显示一个方法的调用层次(被哪些方法...
一个用JSP+Spring+Hibernate+Struts2做的简单的人力资源管理系统有员工、部门、职位管理,能实现基本的增删改查功能。做JavaEE/Oracle/前端课设时可以拿来参考。 项目是用MyEclipse做的,在Tomcat8.5上正常运行。 ...
2.Struts action向导:根据jsp文件中的表单内容自动生成的form类和action类的代码.并修改struts-config.xml配置文件. 编辑辅助方式比Eclipse和Jbuild更高效,使简单, 当你使用FirstJava2你会发现,它速度很快,功能...
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框架,手动搭建,亲测可用!并且已经包含了jquery,json等插件,可直接使用Ajax功能!由于文件大小限制,jar包中删除了hibernate的核心jar,需要大家自己下个添加,其余jar包已经完整!测试...
2.Struts action向导:根据jsp文件中的表单内容自动生成的form类和action类的代码. 并修改struts-config.xml配置文件. 这个FirstJava2开发工具编辑辅助方式比Eclipse和Jbuild更高效,使简单, 自己使用Eclipse和Jbuild...
无需通过浏览器选取模板、资源文件上传,无需通过浏览器的下载功能获得模板再进行导入。在用户确定上传后,网站后台会对用户的模板、使用到的资源文件(包括图片、Js文件、CSS文件等)进行打包压缩,并进行静默上传...
由于容量超过了上传的容量,所以我分成2次打包上传了。。。 本书从ExtJS实现的基本功能开始讲解RIA Web开发,详细讲解ExtJS的基本功能、常用的表单、面板和布局、常见的工具类与函数,以及ExtJS对事件的响应。本书...
由于容量超过了上传的容量,所以我分成2次打包上传了。。。 本书从ExtJS实现的基本功能开始讲解RIA Web开发,详细讲解ExtJS的基本功能、常用的表单、面板和布局、常见的工具类与函数,以及ExtJS对事件的响应。本书...
基于ssh架构的学生信息管理系统,内打包的是个完整的工程,直接导入myeclipse即可。管理员登陆,采用struts titles 布局页面。可输入关键字查询学生,列出全部学生信息,增加,删除,修改,查询,分页等等,各个小...
1) 手工安装 从这里下载你想要的版本,在任何你想的地方解开下载的zip文件,并复制ivy的jar文件到你的ant的lib目录(ANT_HOME/lib). 如果你使用ant 1.6.0或者更高,你可以简单的到src/example/hello-ivy 目录并运行...
双击《小型超市管理系统》“打包发布”文件夹中的BAT文件即可运行程序(注意必须已安装JDK 1.5,并检查Path环境变量中应已经有JDK路径)。 ... www.winu.cn/htmls/553/114/ - 27k - 网页快照 - 类似网页 JavaJAVA源码:...
《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL ...
在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。 • src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个...
该系统结合struts+hibernate+spring使用四层架构设计, 采用extjs设计界面,实现用户登录及grid的搜索显示功能, 该系统没有完全开发完成, 实现了部分功能, 仅供参考者学习一些项目的设计思路和extjs的使用技巧....