场景

从其他服务器下载文件,将这些文件打包压缩后返回给浏览器。不想将文件下载到本地后在打包压缩,所以使用内存流

方案

/** 入参:urlList -- 多个文件下载地址 ; filename -- 压缩包名称.zip */// 压缩包内文件夹名称
String folderName = FilenameUtils.getBaseName(filename);
// 下载并压缩
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();ZipOutputStream zos = new ZipOutputStream(bos)) {for (String url : urlList) {ZipEntry zipEntry = new ZipEntry(folderName + "/" + FilenameUtils.getName(url));zos.putNextEntry(zipEntry);try {Request request = OkHttpClientUtil.requestBuilder(url).get().build();Response response = OkHttpClientUtil.send(request);ResponseBody body = response.body();IOUtils.copy(body.byteStream(), zos);zos.flush();zos.closeEntry();} catch (IOException e) {throw new FileException("文件下载失败", e, ServiceResponseStatus.RUNTIME_ERROR);}}zos.finish();httpServletResponse.addHeader("content-disposition","attachment;filename=" + new String(filename.getBytes(), StandardCharsets.ISO_8859_1));OutputStream os = httpServletResponse.getOutputStream();IOUtils.copy(new ByteArrayInputStream(bos.toByteArray()), os);os.close();
} catch (IOException e) {throw new FileException("xx文件压缩失败", e, ServiceResponseStatus.RUNTIME_ERROR);
}

Java 下载多个文件至内存并压缩文件包返回,无需保存至本地打包压缩相关推荐

  1. html大文件占用内存,[Flutter] 大文件上传之随传随处理(避免占用大量内存)

    今天碰到一个上传较大的视频文件到S3引发闪退的问题.经查此问题产生的原因是内存溢出,连个闪退日志都没有. 这个上传使用的是第三方的插件,我是用 uploadFileStream 来上传文件的,查看其实 ...

  2. java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...

    本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...

  3. 如何读取比机器内存大的文件(内存4G,文件 8G,读取大文件) ?

    我们假设数据可以一行一行地处理,并且数据之间的没有相关性,那么我们有两种方法读取该文件. 1. 使用生成器 yield 逐行读取到内存 def read_file(filename):with ope ...

  4. java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...

    一.目录切换命令 cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个操作所在 ...

  5. uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)

    你懂的,又是项目用到了,作为程序猿义无反顾需要定时 "进化" ,硬头皮去写,虽然曾经作为android开发者写了很多的推送,但是uniapp的推送也是有所差异的,记录一下,以后留用 ...

  6. 文件打包压缩与远程传输

    在文件的传输以及文件的整理过程中我们经常会用到压缩.虽然linux下文件名与文件的属性没有多大关系,但是为了辅助我们人脑的记忆方式,通常在压缩文件时会以不同的扩展名来命名压缩文件.常见的扩展名有: * ...

  7. linux里打包和压缩文件,linux ---打包和压缩文件

    打包和压缩文件 tar -xzvpf file.tar.gz                    解压缩 tar -czvpf file.tar.gz  ***.***           打包压缩 ...

  8. java下载图片压缩包_java压缩文件和下载图片示例

    本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...

  9. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

最新文章

  1. 脑网络的可塑性——随时都在发生
  2. apache 目录访问加密 简单
  3. Pyramid Scene Parsing Network
  4. 考研数学:【以错补错】 降低做题出错率
  5. 李争——一个骨子里是极客的程序员
  6. Python中表达式和语句及for、while循环练习
  7. Parrot 发布新版本——基于Debian的Linux 发行版
  8. golang微服务框架对比_最强开源微服务框架,全网独家整理
  9. Ubuntu部署python3.7的开发和运行环境
  10. 递归算法经典实例python-Python递归算法详解
  11. java控制台通讯录
  12. 利用python处理excel文件并可视化处理-python如何将excel数据处理可视化
  13. manjaro安装docker使用
  14. win10防火墙打不开,设置是灰色的、服务列表更改启动方式也是灰色的,怎么办?
  15. 立方度量(Cubic Metric)
  16. micropython esp8266 红外控制小车
  17. Python最全学习路线
  18. Abp Core 添加短信验证码登录(动态密码登录)
  19. 项目管理:如何使用甘特图制定项目计划
  20. 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

热门文章

  1. uniapp 区分多环境 h5
  2. VC数字图像处理编程讲座之六
  3. 下载vue-element-admin文件,最直接解决报错的方法
  4. web开发入门经典,96道前端面试题
  5. 服务器系统启用ntp拂去,服务器搭建四——NTP服务器搭建
  6. list集合存list 以及s标签在foreach循环遍历中用EL表达式取值
  7. Maya 2018 Qt Designer无法运行解决方案
  8. UG 表达式设置方法
  9. 苹果 macOS 13 Ventura beta 升级描述文件
  10. 画论40 王穉登《吴郡丹青志》