`

struts2 动态压缩成zip文件下载(不生成临时文件)

阅读更多
功能:文件下载
简述:
1.根据画面上的复选框进行文件打包下载
2.待下载文件保存在服务器的硬盘上,打包过程中不生成临时文件
3.打包过程中需要动态创建一个txt文件一并打进zip包中
4.页面上没有文件被选择的场合,按下【下载】按钮后,什么都不做(不刷新页面)

部分内容参考自互联网,如果错误,欢迎指正。

Struts配置文件
<!-- 数据下载Action -->
<action name="downZip" class="DownloadAction">
	<result name="nodata" type="httpheader">
		<param name="status">204</param>
	</result>
</action>


Action代码
	private OutputStream res;
	private ZipOutputStream zos;

	// action的主方法
	public String execute() throws Exception { 
		
		if (有数据可下载) {;
			// 预处理
			preProcess();

		} else {
			// 没有文件可下载的场合,返回nodata,设定参照struts配置文件
			return "nodata";
		}

		// 在这里编辑好需要下载的数据
		// 文件可以是硬盘上的
		// 文件也可以是自己写得数据流,如果是自己写得数据流,请参看outputZipFile方法中的【2.】
		File file = new File();
		file = ...
		outputZipFile(file);
		
		// 后处理
		afterProcess();
		
		return null; 

	}

	// 预处理
	public void preProcess() throws Exception {
		
		HttpServletResponse response = ServletActionContext.getResponse();
		
		res = response.getOutputStream();

		//清空输出流 
		response.reset();   

		//设定输出文件头 
		response.setHeader("Content-disposition ","attachment; filename=a.zip ");   
		response.setContentType("application/zip");
		zos = new ZipOutputStream(res);
		
	}

	// 后处理
	public void afterProcess() throws Exception {
		zos.close();
		res.close();
	}

	// 写文件到客户端
	private void outputZipFile(File file) throws IOException, FileNotFoundException {
		ZipEntry ze = null;
		byte[] buf = new byte[1024];
		
		int readLen = 0;
		
		// 1.动态压缩一个File到zip中
		// 创建一个ZipEntry,并设置Name和其它的一些属性
		// 压缩包中的路径和文件名称
		ze = new ZipEntry("1\\1\\" + file.getName());
		ze.setSize(file.length());
		ze.setTime(file.lastModified());

		// 将ZipEntry加到zos中,再写入实际的文件内容
		zos.putNextEntry(ze);
		InputStream is = new BufferedInputStream(new FileInputStream(file));

		// 把数据写入到客户端
		while ((readLen = is.read(buf, 0, 1024)) != -1) {
			zos.write(buf, 0, readLen);
		}
		is.close();
		
		// 2.动态压缩一个String到zip中
		String customFile = "This is a text file.";

		// 压缩包中的路径和文件名称
		ZipEntry cze = new ZipEntry(“1\\1\\” + "Test.txt");
		zos.putNextEntry(cze);

		// 利用ByteArrayInputStream把流数据写入到客户端
		is = new ByteArrayInputStream(customFile.getBytes());
		while ((readLen = is.read(buf, 0, 1024)) != -1) {
			zos.write(buf, 0, readLen);
		}
		
	}


2
0
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    无垠式代码生成器最新功能与文档增强版0.7.22

    7)生成完整的Eclipse JEE版兼容的zip格式的压缩文件 8)内置SGS脚本(标准生成器脚本)编译器 9)部署请使用Java7和Tomcat7环境 10)部署时请首先使用Dynamic Web项目的wizard生成同名项目再把解压后源码包拷入即可编译。...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

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

    在用户确定上传后,网站后台会对用户的模板、使用到的资源文件(包括图片、Js文件、CSS文件等)进行打包压缩,并进行静默上传。用户在模板市场获取模板时,亦是静默下载,完成后网站后台会自动解压到指定位置并自动...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    应用级产品开发平台APDPlat.zip

    2)、前端控制器使用Struts2。 3)、IOC容器使用Spring。 4)、ORM使用JPA,默认实现是Hibernate。 5)、内置搜索(OSEM)使用Compass。 6)、认证授权使用SpringSecurity。 7)、代码生成使用Freemarker。 8)、日志...

    开源 免费 java CMS FreeCMS 1.4

    模板导出功能,将模板文件和数据导出为zip压缩文件。 10.添加站点时判断选择模板是否有初始化数据,并可导入初始化数据到站点。 11.增加敏感词管理。 12.敏感词处理: 信息:标题,内容,摘要。 栏目:名称,描述。 ...

Global site tag (gtag.js) - Google Analytics