一种流式处理压缩文件并实时上传至存储服务的方法技术

技术编号:39895354 阅读:12 留言:0更新日期:2023-12-30 13:08
本申请公开了一种流式处理压缩文件并实时上传至存储服务的方法,所述方法包括:初始化流式读取环境;流式读取并解析压缩文件;对解析后的文件进行处理;将处理后的所述文件上传至存储服务,并保留所述压缩文件的文件目录结构

【技术实现步骤摘要】
一种流式处理压缩文件并实时上传至存储服务的方法


[0001]本申请属于文件存储和管理领域,尤其涉及一种流式处理压缩文件并实时上传至存储服务的方法


技术介绍

[0002]在过去的几十年中,数据压缩技术已经成为信息
的核心组成部分

随着数字数据的迅速增长,如何有效地存储和传输数据成为了一个重要的挑战

数据压缩技术旨在通过减少数据的冗余来减小文件的大小,从而节省存储空间并加速数据传输

[0003]ZIP
是最常用的文件压缩格式之一,由
Phil Katz

1989
年首次介绍
。ZIP
文件格式不仅支持多种压缩算法,如
Deflate

BZIP2
,还支持文件夹的压缩,允许用户将多个文件和文件夹压缩成一个单独的
ZIP
文件

此外,
ZIP
文件格式还支持加密

文件分片和其他高级功能,使其成为了数据压缩和存档的首选格式

[0004]随着计算机技术的发展,数据存储已经从传统的物理硬盘转向了云存储

云存储提供了一个集中的

可扩展的和经济高效的解决方案,允许用户在云中存储和检索数据

这种转变不仅为大型企业带来了便利,也为中小型企业和个人用户提供了前所未有的数据存储和备份能力

[0005]Minio
是一个开源的对象存储服务,与
Amazon S3
兼容

由于其轻量级

高性能和易于部署的特点,
Minio
在云存储领域受到了广泛关注
。Minio
提供了一个简单的
API
,允许开发者轻松地上传

下载和管理对象数据

[0006]尽管
ZIP
文件格式和
Minio
存储服务各自为数据压缩和存储提供了高效的解决方案,但将大型
ZIP
文件直接上传到云存储仍然面临一些挑战

传统的处理方法是首先在本地完整地解压
ZIP
文件,然后再将解压后的内容上传到云存储

这种方法不仅需要大量的中间存储空间,而且在处理大型
ZIP
文件时可能会导致长时间的延迟

[0007]因此,存在一个明确的需求,即开发一种新的方法,可以流式地处理
ZIP
文件,并将其内容实时上传到
Minio
或其他云存储服务,无需预先在本地解压整个文件

[0008]前面的叙述在于提供一般的背景信息,并不一定构成现有技术


技术实现思路

[0009]针对上述问题,本申请旨在提供一种流式处理压缩文件并实时上传至存储服务的方法,在对压缩文件进行解压缩以及上传至存储服务的过程中,无需占用大量的中间存储空间,也不用担心因处理大型压缩文件而导致长时间的延迟

[0010]本申请提供了一种流式处理压缩文件并实时上传至存储服务的方法,所述方法包括:
[0011]初始化流式读取环境;
[0012]流式读取并解析压缩文件;
[0013]对解析后的文件进行处理;
[0014]将处理后的所述文件上传至存储服务,并保留所述压缩文件的文件目录结构

[0015]根据本申请的一个实施方式,所述初始化流式读取环境,包括:
[0016]创建用以读取所述压缩文件内容的缓冲区;
[0017]初始化用以存储读取的未处理数据的字节切片剩余;
[0018]创建用以跟踪上传的文件的
map
集合;
[0019]创建用于存储待上传的文件部分的缓冲通道;
[0020]创建用于管理线程生命周期的上下文

[0021]根据本申请的一个实施方式,所述流式读取压缩文件,包括:
[0022]从压缩文件的输入流中读取数据到所述缓冲区;
[0023]合并所述字节切片剩余与读取到所述缓冲区的内容,形成联合字节切片

[0024]根据本申请的一个实施方式,所述解析压缩文件,包括:
[0025]根据所述压缩文件结构检测所述联合字节切片中的每个字节;
[0026]当检测到所述压缩文件的头部标志时,解析出所述压缩文件包含文件的属性信息,所述属性信息包括:名称

大小以及压缩方法中的至少一种;
[0027]根据所述属性信息读取并解压所述文件的文件数据

[0028]根据本申请的一个实施方式,根据所述属性信息读取并解压所述文件的文件数据,包括:
[0029]根据所述属性信息检测所述压缩文件中是否存在动态大小的文件,若是,则查找下一个压缩文件的头部标志;
[0030]当检测到所述文件的结束位置时,根据所述压缩方法对所述压缩文件济宁解压

[0031]根据本申请的一个实施方式,所述对解析后的文件进行处理,包括:
[0032]检测文件名是否为预设编码格式;
[0033]若否,则将所述文件名转换成所述预设编码格式;
[0034]基于转换后的所述文件名和目标路径,生成所述文件的文件路径

[0035]根据本申请的一个实施方式,所述检测文件名是否为预设编码格式之前,还包括:
[0036]过滤解压所述压缩文件的文件夹,保留所述文件

[0037]根据本申请的一个实施方式,所述将处理后的所述文件上传至存储服务,包括:
[0038]将解压后的文件数据和处理后的文件名发送至所述缓冲通道;
[0039]启动多线程上传所述缓冲通道中的所述文件数据和所述文件名至存储服务中;
[0040]若检测到所述文件数据和所述文件名上传成功,则关闭缓冲通道

[0041]根据本申请的一个实施方式,所述启动多线程上传所述缓冲通道中的所述文件数据和所述文件名至存储服务中,包括:
[0042]所述多线程并行和
/
或串行上传对应的所述文件数据和所述文件名;
[0043]若检测到线程上传失败,则暂停所述线程;
[0044]当所述线程的暂停达到预设时间后,重新上传;
[0045]若检测到所述线程上传失败的次数达到预设次数值,则关闭所述缓冲通道和
/
或输出提示信息

[0046]根据本申请的一个实施方式,所述方法还包括:
[0047]若检测到错误处理,则将所述错误处理发送至错误处理函数;
[0048]所述错误处理函数输出错误信息

[0049]有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种流式处理压缩文件并实时上传至存储服务的方法,其特征在于,所述方法包括:初始化流式读取环境;流式读取并解析压缩文件;对解析后的文件进行处理;将处理后的所述文件上传至存储服务,并保留所述压缩文件的文件目录结构
。2.
根据权利要求1所述的方法,其特征在于,所述初始化流式读取环境,包括:创建用以读取所述压缩文件内容的缓冲区;初始化一用以存储读取中的未处理数据的剩余字节切片;创建一用以跟踪上传的文件的
map
集合;创建用于存储待上传的文件部分的缓冲通道;创建用于管理线程生命周期的上下文
。3.
根据权利要求2所述的方法,其特征在于,所述流式读取压缩文件,包括:从压缩文件的输入流中读取数据到所述缓冲区;合并所述字节切片剩余与读取到所述缓冲区的内容,形成组合字节切片
。4.
根据权利要求2所述的方法,其特征在于,所述解析压缩文件,包括:根据所述压缩文件结构检测所述联合字节切片中的每个字节;当检测到所述压缩文件的头部标志时,解析出所述压缩文件包含文件的属性信息,所述属性信息包括:名称

大小以及压缩方法中的至少一种;根据所述属性信息读取并解压所述文件的文件数据
。5.
根据权利要求4所述的方法,其特征在于,根据所述属性信息读取并解压所述文件的文件数据,包括:根据所述属性信息检测所述压缩文件中是否存在动态大小的文件,若是,则查找下一个压缩文件的头部标志;当检测到所述文件的结束位置时,根据所述压缩...

【专利技术属性】
技术研发人员:田鹏斌陈天友石志儒
申请(专利权)人:曜科智能科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1