/**
 * @Title: exportZip
 * @Description:TODO(导出建压缩文件)
 * @param delAdviceinfo 为项目实体类
 * @date 2018年4月4日 下午2:36:41
 * @param response
 *
 */
public void exportZip(DelAdviceinfo delAdviceinfo, HttpServletResponse response) {
    OutputStream os = null;
    ZipOutputStream zos = null;
    try {
        os = response.getOutputStream();
        zos = new ZipOutputStream(os);
        String realpath = request.getSession().getServletContext().getRealPath("/");
        String filename = "建议正文内容.zip";
        response.setContentType("application/octet-stream");
        response.setHeader("Connection", "close");  // 表示不能用浏览器直接打开
        response.setHeader("Accept-Ranges", "bytes");  // 告诉客户端允许断点续传多线程连接下载
        response.setHeader("Content-disposition", "attachment; filename="
                + new String(URLEncoder.encode(filename, "utf-8").getBytes("UTF-8"), "ISO-8859-1"));
        // 查询数据
        String userid = getCurrentUserId();
        List<String> rolecodes = sysUserMapper.selectRoleCodesByUserID(userid);
        // 代表
        if (rolecodes.contains("db")) {
            delAdviceinfo.setCurruserid(userid);
        }
        // 代表团管理员
        else if (rolecodes.contains("dbtgly")) {
            delAdviceinfo.setArea(getCurrentUser().getAreacode());
        }
        // 承办单位
        else if (rolecodes.contains("cbdw")) {
            delAdviceinfo.setUnitid(getCurrentUser().getDelunitid());
        }
        List<DelAdviceinfo> list = delAdviceinfoMapper.selectBootPage(null, delAdviceinfo);
        for (DelAdviceinfo item : list) {
            // 查询附议代表
            if (StringUtils.isNotBlank(item.getResolutionerids())) {
                String[] resoids = item.getResolutionerids().split(",");
                List<DelDelegationinfoofSc> resos = delDelegationinfoofScMapper.selectResoList(resoids);
                item.setResos(resos);
            }
            // 保存临时文件
            String filefullname = item.getTitle() + "正文.doc";
            if (StringUtils.isNotEmpty(item.getAdviceno())) {
                filefullname = item.getAdviceno() + "_" + filefullname;
            }
            filefullname = UUID.randomUUID().toString() + "_" + filefullname;
            String filepath = realpath + "/upload/tmp/" + filefullname;
            File file = new File(filepath);
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            FileOutputStream fos = new FileOutputStream(file);
            writeAdviceContent(item, fos);

            // 加入zip流
            String entryname = file.getName();
            entryname = entryname.substring(entryname.indexOf("_") + 1);
            ZipEntry zipEntry = new ZipEntry(entryname);
            zos.putNextEntry(zipEntry);
            InputStream is = new FileInputStream(file);
            int i;
            while ((i = is.read()) != -1) {
                zos.write(i);
            }
            is.close();
            file.delete();
        }

        zos.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
    finally {
        try {
            zos.close();
            os.close();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
    }

}

Java导出压缩包工具类的更多相关文章

  1. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  2. java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  3. WordUtil java导出word工具类

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter ...

  4. 导入导出Excel工具类ExcelUtil

    前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...

  5. javaEE开发之导出excel工具类

    web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...

  6. java下载文件工具类

    java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  7. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  8. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  9. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

随机推荐

  1. element-ui 动态换肤

    1.在安装好 element-ui@2.x 以后,首先安装sass-loader npm i sass-loader node-sass -D 2.安装 element-theme npm i ele ...

  2. SpringBoot技术栈搭建个人博客【前台开发/项目总结】

    前言:写前台真的是我不擅长的东西...所以学习和写了很久很久...前台页面大概开发了两天半就开发好了,采用的静态的html和bootstrap来写,写后台的时候纠结住了...怎么说呢,写页面真的是头疼 ...

  3. 深入解读MySQL8.0 新特性 :Crash Safe DDL

    前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...

  4. asp.net core系列 30 EF管理数据库架构--必备知识 迁移

    一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...

  5. PHP类和函数注释大全

    每次要用PHP的某个功能的时候,都要去查一下,于是决定将PHP所有类和函数都整理出来,加上注释 大致实现 将php.jar文件解压,取出目录stubs 将stubs中的所有php文件中的注释去掉,并做 ...

  6. Vue源码解析(一):入口文件

    在学习Vue源码之前,首先要做的一件事情,就是去GitHub上将Vue源码clone下来,目前我这里分析的Vue版本是V2.5.21,下面开始分析: 一.源码的目录结构: Vue的源码都在src目录下 ...

  7. winform注册功能

    注册按钮事件: private void btnRegister_Click(object sender, EventArgs e) { string username = txtUserName.T ...

  8. WPF ResourceDictionary 主题资源替换(一)

    当我们需要在程序中替换主题,更换另一套背景.颜色.样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Ke ...

  9. Tkinter小技巧:如何为窗口右上角的‘x’添加一个自定义的响应函数

    不废话,直接上代码 import tkinter as tk from tkinter import messagebox main_window = tk.Tk() main_window.geom ...

  10. PHP遍历文件夹下所有文件

    不论是面试还是正常工作需要都会用到遍历文件夹下的所有文件,今天就记录一下笔记.废话不多说直接上代码: <?php /** * 遍历当前文件夹展示所有的文件和目录 */ function dirL ...