/**
 * @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. springcloud之hystrix熔断器-Finchley.SR2版

    本篇和大家分享的是springcloud-hystrix熔断器,其主要功能是对某模块调用失败做断路和降级,简单点就当某个模块程序出问题了并达到某阈值就限制后面请求,并降级的方式提供一个默认返回数据.最 ...

  2. Vue.js-04:第四章 - 页面元素样式的设定

    一.前言 前端开发中有三大件:HTML.CSS.JavaScript,在前面的学习中,不管是学习 Vue 的指令系统还是 Vue 的事件修饰符,主要还是针对的是我们在前端开发中的 JavaScript ...

  3. 如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页

    最近项目有这么个需求:要在关闭当前系统的窗口的时候,退出登录, 因为如果不退出登录可能存在安全风险,其实我想说,电脑没事别借给别人活着离开工位记得一定要锁屏,其实我们设置了cookie失效时间的,过了 ...

  4. Spring Cloud微服务系列文,Hystrix与Eureka的整合

    和Ribbon等组件一样,在项目中,Hystrix一般不会单独出现,而是会和Eureka等组件配套出现.在Hystrix和Eureka整合后的框架里,一般会用到Hystrix的断路器以及合并请求等特性 ...

  5. Entity Framework 之存储过程篇

    最近几天在搞CRUD,使用的是EF这个ORM,最近的项目中上了存储过程,就把在开发中的经验分享出来!我们先创建一个最基本的存储过程,脚本如下,这是一个不带参数的存储过程,我们从最简单的往上走! cre ...

  6. SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题

    SQL优化 MySQL版  - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...

  7. [翻译] Linux 内核中的位数组和位操作

    目录 Linux 内核里的数据结构 原文链接与说明 Linux 内核中的位数组和位操作 位数组声明 体系结构特定的位操作 通用位操作 链接 Linux 内核里的数据结构 原文链接与说明 https:/ ...

  8. SLAM+语音机器人DIY系列:(三)感知与大脑——4.音响麦克风与摄像头

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  9. 搞懂Redis RDB和AOF持久化及工作原理

    前言 因为Redis的数据都储存在内存中,当进程退出时,所有数据都将丢失.为了保证数据安全,Redis支持RDB和AOF两种持久化机制有效避免数据丢失问题.RDB可以看作在某一时刻Redis的快照(s ...

  10. 使用LR编写windows sockets协议xml报文格式脚本实战

    以下是测试脚本Demo: #include "lrs.h" Action() { char * resultCode;//结果代码 char * time; //系统时间 char ...