文档章节

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

谢谢小哥
 谢谢小哥
发布于 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();


        }
    }

© 著作权归作者所有

共有 人打赏支持
下一篇: linux c
谢谢小哥
粉丝 2
博文 27
码字总数 50223
作品 0
沈阳
程序员
私信 提问
java 解压文件

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

douya_love
2013/08/06
60
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
基于Node.js的HTTP/2 Server实践

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

clasky
05/30
0
0
使用腾讯云 SCF 云函数压缩 COS 对象存储文件

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

腾讯云加社区
2017/10/19
0
0
webcamflv开发这看到了回复下可以吗

需要把这个程序做到ARM芯片里面在嵌入式linux上运行,直接读取sensor视频流,压缩成flv后发到指定的流媒体服务器上,要要高清,具体QQ:66677627 13311202226...

北京视元网络高清安防厂
2015/12/12
133
0

没有更多内容

加载失败,请刷新页面

加载更多

撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
12分钟前
0
0
《配电网自动化技术》第一章

写了配电网的组成、历程、难点、存在问题、解决方案,还是蛮好的。尤其是各地建设的系统后续又无法实用化,以及多种终端反而增加了运维工作量等,都是目前切实存在的让大家不停吐槽的内容。

max佩恩
17分钟前
0
0

中国龙-扬科
35分钟前
2
0
使用vuex的state状态对象的5种方式

vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试。 下面给大家来贴一下我的vuex的结构 下面是store文件夹下的state.js和index.js内容 //state.jsconst state =...

peakedness丶
38分钟前
2
0
NetCore MVC Demo

地址:http://114.116.9.72:5411

whltian
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部