/**
 * @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. 安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目

    以下包括内容: 一.redis下载安装,启动 二.Redis可视化管理工具(Redis Desktop Manager)安装 三.实例化项目 一.redis下载安装,启动 1,redis官方下载地址: ...

  2. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  3. Asp.Net进程外Session(状态服务器Session、数据库Session)

    介绍 我们知道,当浏览器关闭,或者网站重启的时候,会话就结束了.即Seesion就丢失了.(当Web.config配置文件改动,哪怕什么内容都不加,仅仅往配置文件中加一个空格都是改we.config变 ...

  4. 关于CSS引入方式的详细见解

    关于CSS的发展史这里不做介绍.写博客的原因之一是想帮助那些与我一样喜欢纠结的初入前端的伙伴,希望自己写的帖子能对伙伴有些许帮助:原因之二这些帖子也算自己的一个知识的整理.现在还没有一定的顺序可循,但 ...

  5. c# List根据某个属性进行分类,变成以属性名称作为分类的多个List

    在平时的开发中,我们从数据库中得到List列表,但是我们希望可以根据属性名称再次进行分类. 其实LINQ中已经内置相应的算法. 长话短说,直接上代码: var dataList = JsonHelpe ...

  6. Elasticsearch与Hadoop集成大数据处理介绍

    传统大数据处理 现代数据架构 Hadoop在20业务场景的应用 DataLake A data lake is a system or repository of data stored in its ...

  7. Source-Based XSS Test Cases

    Single Reflection Case 01 - Direct URL Injection (no parameter) payload: https://brutelogic.com.br/x ...

  8. Vue与React两个框架的区别对比

    简单介绍 React--Facebook创建的JavaScript UI框架.它支撑着包括Instagram在内的大多数Facebook网站.React与当时流行的jQuery,Backbone.js ...

  9. C++ 子类继承父类纯虚函数、虚函数和普通函数的区别

    C++三大特性:封装.继承.多态,今天给大家好好说说继承的奥妙 1.虚函数: C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现.子类可以重写父类的虚函数实现子类 ...

  10. RabbitMQ for Mac OS Install

    使用brew来安装 RabbitMQ brew install rabbitmq 执行看到如下命令: Updating Homebrew... ==> Auto-updated Homebrew ...