/**
 * @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. 【机器学习】--FP-groupth算法从初始到应用

    一.前述 二.构建FP_groupth数流程 1.扫描事务数据库D 一次.收集频繁项的集合F 和它们的支持度.对F 按支持度降序排序,结果为频繁项表L. 2.创建FP 树的根节点,以“null”标记它 ...

  2. cordova build android Command failed with exit code EACCES

    问题: 执行cordova build android 出现输出如下,编译不成功. ANDROID_HOME=/Users/huangenai/Library/Android/sdkJAVA_HOME ...

  3. ToastCustom【自定义显示风格的Toast】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 基于系统Toast的自定义显示风格的Toast. 效果图 代码分析 ToastCustom类基于系统Toast,不是继承Toast, ...

  4. DeviceUuidFactory【获取设备唯一标识码的UUID(加密)】【需要运行时权限的处理的配合】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于An ...

  5. python:socket网络编程

    Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket, 又称为“套接字”. 模块 import socket 创建套接字 socket.socket( ...

  6. SmartSql Map

    SmartSqlMap 属性 说明 Scope 域,用于SqlMap定义Sql声明范围 Statement标签 属性 说明 Id 唯一性编号 Cache 缓存策略编号,引用自Cache标签 State ...

  7. 开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有

      先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一.请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码.这酸爽. ...

  8. MVC,EF 小小封装

    1.项目中经常要用到 EF,有时候大多数的增删改查都是重复性的东西,本次封装就是为了快速开发,期间没有考虑到架构上的各种思想,就感觉到欠缺点什么东西所以这次将这些拉出来,有存在问题的话还请各位多多指导 ...

  9. 上传图片截图预览控件不显示cropper.js 跨域问题

    上传图片到图片服务器,因为域名不同,多以会有跨域问题. No 'Access-Control-Allow-Origin' header is present on the requested reso ...

  10. PHP八大设计模式

    设计模式 单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法. 单例模式 $_instance必须声明为静态的私有变量 构造函数和析构函数必须声 ...