`

struts2动态生成zip文件并下载

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

部分内容参考自互联网,如果错误,欢迎指正。
Struts配置文件
<!-- 数据下载Action -->
<action name="downZip" class="DownloadAction">
    <result name="nodata" type="httpheader">
        <param name="status">sky7034</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);
        }
       
    }
分享到:
评论

相关推荐

    struts2jar.zip

    这个"struts2jar.zip"压缩包包含了Struts2学习和研究的基础材料,特别是对于初学者来说非常有价值。 "使用说明-jar包.txt"很可能是一个文本文件,提供了关于如何在项目中使用Struts2库的指导。通常,Struts2的核心...

    struts2 zip 上传下载

    本篇文章将深入探讨如何在Struts2中实现ZIP文件的上传和下载功能,并根据描述中的信息,讨论如何改进错误处理,确保按文件名输出正确的错误信息。 首先,我们要了解文件上传的流程。在Struts2中,我们可以使用`...

    struts2 上传文件及打包下载zip

    首先,创建一个`ZipOutputStream`实例,指向我们要生成的ZIP文件。然后,遍历需要打包的文件列表,为每个文件创建一个`ZipEntry`,并将其写入`ZipOutputStream`。记得关闭所有流以确保文件被正确写入。 在Struts2的...

    struts2所需jar包 lib.zip

    在这个名为"lib.zip"的压缩包中,包含了运行Struts2应用程序所必需的JAR文件。这些库文件对于理解Struts2的工作原理和开发流程至关重要。 首先,"commons"标签暗示了Apache Commons项目的一些组件,它们是Java开发...

    Struts2中文件下载&&zip 文件的压缩

    以下是如何在Struts2 Action中创建ZIP文件的示例: ```java import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class...

    Struts2文件批量上传.zip

    选择文件2" /&gt; 上传" /&gt; ``` 这样,用户就可以选择多个文件进行上传了。 5. **文件处理** 在Action的`execute()`方法中,可以通过遍历`files`列表来获取每个上传的文件,然后进行存储或处理。例如,保存到...

    struts2常用包.zip

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发领域广泛应用,极大地简化了创建和维护基于JSP的Web应用程序的工作流程。`struts2常用包.zip`包含了Struts2框架运行所必需的一些核心库和其他支持...

    struts2jar包.zip

    在提供的"struts2jar包.zip"中,我们可以找到一系列与Struts2相关的JAR文件,这些文件包含了Struts2框架的核心组件、扩展和依赖库。下面将详细介绍这些文件可能包含的内容及其重要性: 1. **核心组件**: - `...

    struts2结合ext3批量下载文件

    通过以上步骤,我们可以实现一个在Struts2框架下,利用Ext3创建前端交互界面,后端使用Apache POI处理Excel文件,TrueZip打包文件,提供批量下载服务的功能。这不仅可以提高用户的下载效率,还简化了后台处理大量...

    struts2api.zip

    Struts2内置了一些常见的Result类型,如`dispatcher`(用于转发到JSP或其他资源),`stream`(用于处理文件下载),`redirect`和`redirectAction`(用于重定向)。 4. **Struts2配置**:Struts2支持XML和注解两种...

    struts2必备jar.zip

    总的来说,"struts2必备jar.zip"压缩包包含的文件是构建和运行基于Struts2的应用程序所必需的。通过理解这些组件的作用和工作原理,开发者能够更好地掌握Struts2框架,从而更高效地开发出高质量的Java Web应用。

    struts-2.3.37.zip

    标题中的"struts-2.3.37.zip"表明这是一个Struts 2框架的版本2.3.37的压缩包文件。这个版本的发布可能包含了一些安全修复、性能优化或其他功能改进。 Struts 2的核心组件包括: 1. **Action类**:Action是业务逻辑...

    Struts2漏洞检查工具2018版.zip

    Struts2的核心是Action类,它负责处理HTTP请求,并通过配置文件或注解来决定如何转发请求到相应的业务逻辑。 Struts2框架的流行源于其强大的功能和丰富的插件系统,如拦截器、结果类型、动态方法调用等,这些都使得...

    struts2 文件的上传和下载

    最后,`UpAndDownLoad.zip`可能包含了示例代码、配置文件和其他相关资源,帮助理解Struts2中文件上传和下载的实现。在实际开发中,确保对上传文件进行安全检查,防止恶意文件上传,同时合理管理下载资源,优化用户...

    jakarta-struts-1.1.zip_jakarta-Struts-1_jakarta-struts 1_jakarta

    这个WAR文件内含有Struts框架的API文档,开发者可以通过解压并部署这个WAR文件,在Web服务器上访问到Struts的官方文档,从而了解框架的各种类、接口和方法的详细信息,方便开发和调试。 Jakarta Struts的核心概念...

    struts2lib.zip

    在处理上传文件或下载文件时,Struts2可能会用到这个库中的功能。 6. **commons-fileupload.jar**:Apache Commons FileUpload库专门用于处理HTTP文件上传请求。在Struts2中,使用这个库可以方便地实现用户上传文件...

    struts2-lib.zip

    Struts2-lib.zip是一个包含Struts 2.0.8框架库文件的压缩包,主要用于Java Web开发。Struts 2是Apache软件基金会旗下的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,旨在简化开发...

    struts2文件上传例子.rar

    总的来说,这个例子展示了如何在Struts2框架下实现文件上传功能,包括Action的编写、配置文件的设定、表单的创建以及文件处理逻辑。通过学习这个例子,开发者可以了解到Struts2处理文件上传的基本流程,为自己的项目...

    Spring与Struts 2整合.zip

    在"Spring与Struts 2整合.zip"这个压缩包中,可能包含了一系列的配置文件、源代码和示例项目,帮助开发者了解和学习如何将这两个框架有效地结合在一起。通过学习和实践这些材料,开发者可以掌握在实际项目中整合...

    Struts2Test.zip

    在"Struts2Test.zip"这个压缩包中,我们找到了一个基于Struts2实现的简单CRUD(创建、读取、更新、删除)操作示例。这个示例特别强调了使用JSON进行局部刷新以及集成插件,同时也包含了一个简化的数据库结构,主要...

Global site tag (gtag.js) - Google Analytics