struts2实现文件批量下载

大家都知道struts2提供了文件下载的功能,很方便很好用。废话不多说直接开始。

首先我们先对struts.xml进行配置,struts2的result 类型设为stream,请看如下配置:

<span style="font-size:18px;">        <result name="toDownload" type="stream">
           <param name="bufferSize">2048</param>
            </result></span>

在这要介绍一下几个字段属性:

1、contentType,这个和文件上传的一样,就是要下载文件的格式;

2、contentLength:这是要下载文件的文件大小;

3、contentDisposition:这个有两个属性:1、inline;2、attachment( contentDisposition默认是
inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择,要想弹出下载框就用附件的形式attachment)

4、bufferSize:这是下载缓冲区的大小。(默认1024)

5、inputName:在定义输入流的名字。(默认inputStream)

这些属性可以在配置文件中定义,也可以在我们的java文件中定义,在这里我用的是在java文件中给以getter方法定义

private String contentType;
	public String getContentType() {
		return contentType;
	}
	public long getContentLength() {
		return contentLength;
	}
	public String getContentDisposition() {
		return contentDisposition;
	}
	private long contentLength;
	private String contentDisposition;
	private InputStream inputStream;
	public InputStream getInputStream() {
		return inputStream;
	}

文件批量下载需要用到ZipOutputStream这个的用法大家可以到网上自行百度。

下面贴上action内代码:

public String download()throws Exception{

	String FilePath= ServletActionContext.getServletContext()//获取路径
	   .getRealPath("/images/");
		File zipFile=new File(ServletActionContext.getServletContext()//定义所要输入文件的zip文件
				   .getRealPath("images/testdownload/zipFile.zip"));
		ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(zipFile));
		 int temp = 0 ; 

		 FileInputStream input=null;
		for (int i = 0; i < fileName.length; i++) {
			File Files=new File(FilePath+"\\"+fileName[i]);
			 input=new FileInputStream(Files);
			zos.putNextEntry(new ZipEntry(Files.getName()+File.separator+fileName[i]));//将文件加入到Entry中
			 while((temp=input.read())!=-1){ // 读取内容
                 zos.write(temp) ;    // 压缩输出
             }

		}

    input.close();
	zos.close();
	 contentType="application/x-zip-compressed";//设定文件类型为.zip文件
	contentDisposition="attachment;filename=test.zip";//设定文件名为test.zip
		inputStream=new FileInputStream(zipFile); //定义流
		System.out.println(inputStream);
		contentLength=inputStream.available();

	return"toDownload";
 }

这里使用的是零时文件的形式,在方法调用的时候把文件夹清空是必要的,这里没有写。

时间: 2024-10-10 09:27:19

struts2实现文件批量下载的相关文章

R语言之RCurl实现文件批量下载

R语言之RCurl实现文件批量下载 前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行相关数据的抓取以及下载,为数据分析提供原始素材.近年RCurl在数据分析业界中使用也越来越流行. Step1:安装RCurl install.packages('RCurl') Step2:代码实现 =========================== 1 #利

struts2进行文件的下载

首先搭建好struts2的开发环境,先新建一个下载的页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My

struts2实现文件的下载

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.编写下载文件的action.(做测试前现在WebRoot路径下建一个upload文件夹,里面放你要下载文件)该类为FileDownload.action</span> <pre name="code" class="java"

c# 多线程多文件批量下载

废话少说,先演示一张效果图 简单说下过程喽 开发过程中其实总是会碰到项目想应用下载文件~ 看其他语言有很多封装好的类库可以使用~~ 作为小白的我并没有找到很多c#的案例可参考 后找到一款"MutThreadDownLoadFile"的demo 但是每次使用感觉并不方便,另外可用信息可扩展不是特别强.. 然后重新改进并封装了类库的形式,可以简单使用 贴出此demo的代码看一下 public Form1() { InitializeComponent(); } DownLoadFile d

Java批量文件打包下载

经常遇到选择多个文件进行批量下载的情况,可以先将选择的所有的文件生成一个zip文件,然后再下载,该zip文件,即可实现批量下载,但是在打包过程中,常常也会出现下载过来的zip文件中里面有乱码的文件名,通过使用ant.jar中的org.apache.tools.zip里的ZipOutPutStream为实现编码的设置. 代码如下: ant包引用 [html] view plain copy print? <span style="font-size:14px">Xml代码 &

Windows下使用explorer批量下载文件

背景: 客户的环境是Windows Server 2008 R2,需要每个月安装补丁,但出于安全考虑,将微软的自动更新封掉了,以至于每次安装补丁只能手动下载然后安装. 有时候每次需要下载的补丁均比较多,而服务器上有没有迅雷,QQ旋风等下载工具,也不允许安装,所以每次均手动下载,十分麻烦. ==================我是分割线======================= 此方法是通过系统自带的explorer来实现批量下载. 众所周知,当你在我的电脑中输入一个链接时,explorer会

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中

7、Struts2实现文件上传和下载

一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java 1 package com.action; 2 import java.io.File; 3 4 import javax.servlet.ServletContext; 5 6 import org.apache.commons.io.FileUtils; 7 import org.apache.struts2.ServletActionContext; 8 9 i

Struts2控制文件的上传与下载

Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制数据发送给数据. (2)Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar