java图片压缩导出

public void queryHbaseDataByCondition(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String rootPath = request.getRealPath("/");
    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
    ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("supplier")); // 前缀为 my-prefix
    filterList.addFilter(filter);
    List<String> stringList = getRowkeyListByFilterNew(filterList, tableName, "1509437597618", "1510293754089", "");
    String name = "图片压缩包下载";
    String fileName = name + System.currentTimeMillis();
    String zipFileName = fileName + ".zip";
    File zipFile = null;
    String path = rootPath + "temp_download";
    FileOutputStream zipFos = null;

    //调用工具类获取图片
    byte[] data = new byte[0];
    FileOutputStream outStream = null;
    try {
        //创建文件
        File file = new File(rootPath + "temp_download");
        //判断文件是否存在,如果不存在,则创建此文件夹
        if (!file.exists()) {
            file.mkdir();
        }
        data =stringList.get(11).getBytes();


        //new一个文件对象用来保存图片,默认保存当前工程根目录
        if (data != null) {
            File imageFile = new File(path + File.separator + fileName + ".jpg");
            //创建输出流
            outStream = new FileOutputStream(imageFile);
            //写入数据
            outStream.write(data);
            //关闭输出流
            outStream.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        outStream.close();

    }
    try {

        //获取创建好的图片文件
        File imageFile = new File(path + "/" + fileName + ".jpg");
        // 打成压缩包
        zipFile = new File(path + "/" + zipFileName);
        zipFos = new FileOutputStream(zipFile);
        ArchiveOutputStream archOut = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, zipFos);
        if (archOut instanceof ZipArchiveOutputStream) {
            ZipArchiveOutputStream zos = (ZipArchiveOutputStream) archOut;
            ZipArchiveEntry zipEntry = new ZipArchiveEntry(imageFile, imageFile.getName());
            zos.putArchiveEntry(zipEntry);
            zos.write(FileUtils.readFileToByteArray(imageFile));
            zos.closeArchiveEntry();
            zos.flush();
            zos.close();
        }

        // 压缩完删除txt文件
        if (imageFile.exists()) {
            imageFile.delete();
        }

        // 输出到客户端
        OutputStream out = null;
        out = response.getOutputStream();
        response.reset();
        response.setHeader("Content-Disposition", "attachment;filename=" + new String(zipFileName.getBytes("GB2312"), "ISO-8859-1"));
        response.setContentType("application/octet-stream; charset=utf-8");
        response.setCharacterEncoding("UTF-8");
        out.write(FileUtils.readFileToByteArray(zipFile));
        out.flush();
        out.close();

        // 输出客户端结束后,删除压缩包
        if (zipFile.exists()) {
            zipFile.delete();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ArchiveException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        zipFos.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值