java 多重压缩下载_java实现多个网络文件批量下载并压缩

该博客介绍了如何使用Java实现批量下载网络上的文件,并按照指定规则存储到本地临时目录,然后将这些文件压缩成ZIP格式并通过浏览器下载。首先,通过多线程下载文件到系统临时目录,接着将临时目录中的文件打包成压缩文件供用户下载,同时设置了定时任务自动删除临时文件。
摘要由CSDN通过智能技术生成

1. 使用场景

文档管理模块,列表中显示的记录的每日文件上传保存的记录.每条数据中有一个字段存放了文件的存储地址文件服务器上

现在需要对列表数据批量下载,将多个文件一起下载并存放到一起通过zip压缩包的形式下载到浏览器

2. 开发思路

因为有些需要是要按照某种分类保存并下载,因为可能存在多层文件夹,所有不能直接通过后去每个文件的流的形式往压缩包里面放,所以这里采用先下载的方式,将网络文件按照给定的规则创建文件夹并存放在本地临时目录,然后再去读写文件装成压缩流下载.

说明: 根据自己实际业务,由于需要批量下载的文件一起超过300兆,所以采用两拆分服务,先请求下载接口,使用多线程下载到服务器临时目录,然后隔一段时间去请求下载服务

2.1 文件批量下载到临时目录

controller层

@GetMapping("step/imgs/download/{id}")

@ApiOperation(value = "将指定巡检任务下的图片下载到本地")

public ResponseEntity uploadToLocal(@PathVariable("id") Integer id){

//这步根据个人的业务来获取下载信息集合

Map> imgMap = exportService.getImgMap(id);

exportService.imgTolocal(imgMap);

return ResponseEntity.ok("图片资源正在下载中,请5分钟以后再访问 : /step/imgs/download?id= ,进行文件下载");

}

复制代码

imgMap数据结构说明:

key: 文件夹名称

value: 存放文件数据表

字段如下

@ApiModelProperty(value = "ID, 修改时为必填")

private Integer id;

@ApiModelProperty(value = "巡检任务步骤表id")

private Integer taskPointStepId;

@ApiModelProperty(value = "图片,视频url")

private String imgUrl;

@ApiModelProperty(value = "缩略图url")

private String imgThumbnailUrl;

@ApiModelProperty(value = "类型0:图片,1:视频")

private Integer type;

private String pointName;

private String stepName;

复制代码

service层

void imgTolocal(Map> res);

复制代码

service实现类

@Override

public void imgTolocal(Map> res){

index = 0;

if(res == null || res.isEmpty()){

throw new BadRequestAlertException("has_not_imgList" ,this.getClass().getSimpleName(),"has_not_imgList");

}

// 获取系统临时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值