Java 下载多个文件至内存并压缩文件包返回,无需保存至本地打包压缩
场景
从其他服务器下载文件,将这些文件打包压缩后返回给浏览器。不想将文件下载到本地后在打包压缩,所以使用内存流
方案
/** 入参: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 下载多个文件至内存并压缩文件包返回,无需保存至本地打包压缩相关推荐
- html大文件占用内存,[Flutter] 大文件上传之随传随处理(避免占用大量内存)
今天碰到一个上传较大的视频文件到S3引发闪退的问题.经查此问题产生的原因是内存溢出,连个闪退日志都没有. 这个上传使用的是第三方的插件,我是用 uploadFileStream 来上传文件的,查看其实 ...
- java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...
本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...
- 如何读取比机器内存大的文件(内存4G,文件 8G,读取大文件) ?
我们假设数据可以一行一行地处理,并且数据之间的没有相关性,那么我们有两种方法读取该文件. 1. 使用生成器 yield 逐行读取到内存 def read_file(filename):with ope ...
- java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...
一.目录切换命令 cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个操作所在 ...
- uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)
你懂的,又是项目用到了,作为程序猿义无反顾需要定时 "进化" ,硬头皮去写,虽然曾经作为android开发者写了很多的推送,但是uniapp的推送也是有所差异的,记录一下,以后留用 ...
- 文件打包压缩与远程传输
在文件的传输以及文件的整理过程中我们经常会用到压缩.虽然linux下文件名与文件的属性没有多大关系,但是为了辅助我们人脑的记忆方式,通常在压缩文件时会以不同的扩展名来命名压缩文件.常见的扩展名有: * ...
- linux里打包和压缩文件,linux ---打包和压缩文件
打包和压缩文件 tar -xzvpf file.tar.gz 解压缩 tar -czvpf file.tar.gz ***.*** 打包压缩 ...
- java下载图片压缩包_java压缩文件和下载图片示例
本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
最新文章
- 脑网络的可塑性——随时都在发生
- apache 目录访问加密 简单
- Pyramid Scene Parsing Network
- 考研数学:【以错补错】 降低做题出错率
- 李争——一个骨子里是极客的程序员
- Python中表达式和语句及for、while循环练习
- Parrot 发布新版本——基于Debian的Linux 发行版
- golang微服务框架对比_最强开源微服务框架,全网独家整理
- Ubuntu部署python3.7的开发和运行环境
- 递归算法经典实例python-Python递归算法详解
- java控制台通讯录
- 利用python处理excel文件并可视化处理-python如何将excel数据处理可视化
- manjaro安装docker使用
- win10防火墙打不开,设置是灰色的、服务列表更改启动方式也是灰色的,怎么办?
- 立方度量(Cubic Metric)
- micropython esp8266 红外控制小车
- Python最全学习路线
- Abp Core 添加短信验证码登录(动态密码登录)
- 项目管理:如何使用甘特图制定项目计划
- 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)