文档章节

从服务器上读取流下载并压缩

谢谢小哥
 谢谢小哥
发布于 2016/12/07 11:17
字数 181
阅读 33
收藏 1


    @RequestMapping(value="/doData1/{ids}", method=RequestMethod.GET)
    @ResponseBody
    public void doData1(@PathVariable String ids,HttpServletRequest request,HttpServletResponse response) throws IOException {
        String[] strArray = null;
        ids = ids.substring(1, ids.length());
        strArray = ids.split(";");
        String filename ="媒资库.zip";
        byte[] bt;
        bt = filename.getBytes("UTF-8");
        filename = new String(bt, "8859_1");
        response.setContentType("application/octet-stream");
        response.setHeader("Content-disposition", "attachment;filename="
        +filename);
        ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());

        //放入需下载文件地址

        zipFile(strArray, zos);
        zos.flush();
        zos.close();

    }

 

private void zipFile(String[] ids, ZipOutputStream zos)
            throws IOException {
        for (int i = 0; i < ids.length; i++) {
            EssayArticle essayArticle = essayArticleService.get(ids[i]);
            String attachmentId = essayArticleRecordService.getNewAttachment(ids[i]);
            System.out.println(attachmentId);
            InputStream in = gridFsOperations.findOne(query(whereFilename().is(attachmentId))).getInputStream();
            String fileName = essayArticle.getArticleTitle();//下载文件时显示的文件保存名称
            zos.putNextEntry(new ZipEntry("/"+essayArticle.getId()+"/"+fileName+"."+essayArticle.getFileFormat()));
            byte[] buffer = new byte[1024];
            int r = 0;
            while ((r = in.read(buffer)) != -1) {
                zos.write(buffer, 0, r);
            }
            zos.closeEntry();
            in.close();
            //json file
            String content = "{\"id\":\""+essayArticle.getId()+"\",\"articleTitle\":\""+essayArticle.getArticleTitle()+"\"}";
            zos.putNextEntry(new ZipEntry("/"+essayArticle.getId()+"/"+essayArticle.getId()+".json"));
            zos.write(content.getBytes());
            zos.closeEntry();


        }
    }

© 著作权归作者所有

共有 人打赏支持
谢谢小哥
粉丝 2
博文 27
码字总数 50223
作品 0
沈阳
程序员
java 解压文件

文件下载和传输过程中,为了保证速度,发送一个下载请求后,得到的是一个 ZipOutputStream的压缩流,可不可以直接把这个压缩流直接解压出来,直接读取里面的数据??? 具体怎么写,求大神.......

douya_love
2013/08/06
52
1
Java无需解压直接读取Zip文件和文件内容

解析zip文件读取文件流: package test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java......

Elivense
2016/11/30
976
0
使用腾讯云 SCF 云函数压缩 COS 对象存储文件

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云Serverless团队 在使用腾讯云 COS 对象存储的过程中,我们经常有想要把整个 Bucket 打包下载的需求,但是 COS 并...

腾讯云加社区
2017/10/19
0
0
Android NDK开发之旅30--FFmpeg视频播放

1.播放多媒体文件步骤 通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件...

香沙小熊
2017/12/08
0
0
基于Node.js的HTTP/2 Server实践

虽然HTTP/2目前已经逐渐的在各大网站上开始了使用,但是在目前最新的Node.js上仍然处于实验性API,还没有能有效解决生产环境各种问题的应用示例。因此在应用HTTP/2的道路上我自己也遇到了许多...

clasky
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sourcetree 离线免注册登录安装教程

Sourcetree是一个优秀的git可视化管理工具,深受开发者喜爱Sourcetree官网,但是在安装时需要谷歌账户登录,需要翻qiang才可以,此一点一直被人们所诟病。今天本教程就为大家提供离线免登陆安...

QQZZFT
19分钟前
1
0
使用 PostgreSQL 解决一个实际的统计分析问题

使用 PostgreSQL 解决一个实际的统计分析问题作者:老农民(刘启华)Email: 46715422@qq.com 之前有个朋友扔给我一个奇葩需求,他们公司之前做了一批问卷调查,全部都是统一格式的excel...

新疆老农民
22分钟前
1
0
TypeScript基础入门之高级类型的映射类型

转发 TypeScript基础入门之高级类型的映射类型 高级类型 映射类型 一个常见的任务是将一个已知的类型每个属性都变为可选的: interface PersonPartial {    name?: string;    age?...

durban
37分钟前
1
0
Dubbo源码分析(6):Dubbo内核实现之基于SPI思想Dubbo内核实现

SPI接口定义 定义了@SPI注解 package com.alibaba.dubbo.common.extension; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.an......

郑加威
38分钟前
1
0
RxJS的另外四种实现方式(后记)—— 同时实现管道和链式编程

目录 RxJS的另外四种实现方式(序) RxJS的另外四种实现方式(一)——代码最小的库 RxJS的另外四种实现方式(二)——代码最小的库(续) RxJS的另外四种实现方式(三)——性能最高的库 Rx...

一个灰
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部