CN105306531A - 一种基于Zip压缩方式的打包下载方法 - Google Patents
一种基于Zip压缩方式的打包下载方法 Download PDFInfo
- Publication number
- CN105306531A CN105306531A CN201510592147.9A CN201510592147A CN105306531A CN 105306531 A CN105306531 A CN 105306531A CN 201510592147 A CN201510592147 A CN 201510592147A CN 105306531 A CN105306531 A CN 105306531A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- zip
- client
- data flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种基于Zip压缩方式的打包下载方法,属于文件管理技术领域;客户端向服务端请求文件下载,Zip读取服务端需要下载的文件数据将文件数据压缩成一个数据流,利用HTTP协议,将压缩打包后的数据流发送到客户端,客户端再利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件;本发明不仅提高了多文件和文件夹打包下载的效率和速度,而且不需要生成磁盘缓存文件,节省了服务端的存储空间。
Description
技术领域
本发明公开一种打包下载方法,属于文件管理技术领域,具体地说是一种基于Zip压缩方式的打包下载方法。
背景技术
随着互联网技术的不断发展,以及云计算的崛起,网络数据越来越丰富。私有云和公有云越来越得到普及,普通用户亦可以通过申请网盘账户将自己的文件上传到云端服务器,而企业更是可以借助云服务提供商搭建自己的私有云服务,云服务的一项重要功能便是提供云端存储,可将文件存放云端,其好处是可以自动同步,进行历史版本管理,文件永不丢失等。越来越多的个人或者企业的数据和文件存放到云端,当用户将云端的文件夹或者多个文件同时下载到本地时,需要将这些文件夹和文件进行打包处理,然后再下载。一般的解决思路是将这多个文件夹或者文件先进行压缩打包形成一个临时文件,然后将压缩打包后的临时文件下载,最后在服务器端删除该压缩打包文件。但是该过程存在压缩打包过程会占用较长的下载时间,而且在服务端生成一个临时文件,即使下载结束后立即删除该文件,但在下载过程中依然占用了一定的空间,造成存储空间的无谓消耗。
为此本发明提供一种基于Zip压缩方式的打包下载方法,通过多文件读取、压缩打包、数据发送、数据接收的方法设置,将其中多文件读取是将多个文件和文件夹以二进制数据依次读入内存缓存区,并将文件和文件夹对象添加到Zip输出流处理器对象中,压缩打包是将读入内存缓存区的二进制数据压缩编码并打包,通过HTTP协议的输出流处理器发送到客户端,客户端则通过HttpClient的Http协议包发送和接收打包下载请求,并通过输入流处理器接收服务端发送来的数据。不仅提高了多文件和文件夹打包下载的效率和速度,而且不需要生成磁盘缓存文件,节省了服务端的存储空间。
发明内容
本发明针对云端多文件在压缩打包过程会占用较长的下载时间,而且在服务端生成一个临时文件,即使下载结束后立即删除该文件,但在下载过程中依然占用了一定的空间,造成存储空间的无谓消耗的问题,提供一种基于Zip压缩方式的打包下载方法,通过多文件读取、压缩打包、数据发送、数据接收的方法设置,
不仅提高了多文件和文件夹打包下载的效率和速度,而且不需要生成磁盘缓存文件,节省了服务端的存储空间。
本发明提出的具体方案是:
一种基于Zip压缩方式的打包下载方法,客户端向服务端请求文件下载,Zip读取服务端需要下载的文件数据将文件数据压缩成一个数据流,利用HTTP协议,将压缩打包后的数据流发送到客户端,客户端再利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件。
Zip读取文件数据以二进制流的方式读入内存缓存,将缓存区的二进制数据进行压缩编码并打包成一个数据流。多个文件数据实质被处理成一个二进制数据流。
Zip利用流处理器读取文件数据以二进制流的方式读入内存缓存,将缓存区的二进制数据通过流处理器输出到Zip另一流处理器,该流处理器对输入的二进制数据进行压缩编码并打包成一个数据流。Java的链接(Chaining)机制,可以将一个流处理器,如JavaI/O类java.io.FileInputStream与另外一个流处理器首位相接,以其中之一的输出为输入,形成一个流管道的链接。
Zip读取服务端需要下载的文件数据的步骤:
步骤1:获取文件夹的子文件夹和子文件路径的字符串数组a,定义临时变量i=0,Zip输出流处理器;
步骤2:遍历路径数据a的元素,当前路径为pathname;
步骤3:判断pathname是否为路径,是,则调用Zip输出流处理器对象的putNextEntry方法,添加pathname对应的文件夹对象,重复步骤1-3;否则调用Zip输出流处理器对象的putNextEntry方法添加pathname对应的文件对象,以缓存方式通过输入流处理器将文件数据以二进制流读入内存缓冲区,至结束。
客户端发送和接收请求通过HttpClient的HTTP协议客户端编程工具完成。
一种基于Zip压缩方式的打包下载系统,包括文件读取模块、压缩打包模块、数据发送模块和数据接收模块;
文件读取模块负责Zip读取服务端需要下载的文件数据;
压缩打包模块负责将文件数据压缩成一个数据流;
数据发送模块负责利用HTTP协议,将压缩打包后的数据流发送到客户端;
数据接收模块负责客户端利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件,以及客户端向服务端请求文件下载。
文件读取模块中Zip读取文件数据以二进制流的方式读入内存缓存。
本发明的有益之处是:本发明客户端向服务端请求文件下载,Zip读取服务端需要下载的文件数据将文件数据压缩成一个数据流,利用HTTP协议,将压缩打包后的数据流发送到客户端,客户端再利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件,其中优选地利用文件和文件夹对象添加到Zip输出流处理器对象中,压缩打包是将读入内存缓存区的二进制数据压缩编码并打包,通过HTTP协议的输出流处理器发送到客户端,客户端则通过HttpClientHTTP协议包发送和接收打包下载请求,并通过输入流处理器接收服务端发送来的数据,不仅提高了多文件和文件夹打包下载的效率和速度,而且不需要生成磁盘缓存文件,节省了服务端的存储空间。
附图说明
图1Java流处理器链接示意图;
图2文件和文件夹读取流程示意图;
图3服务端数据读入压缩以及数据输出时序示意图;
图4客户端接收服务端数据时序示意图。
具体实施方式
一种基于Zip压缩方式的打包下载系统,包括文件读取模块、压缩打包模块、数据发送模块和数据接收模块;
文件读取模块负责Zip读取服务端需要下载的文件数据;
压缩打包模块负责将文件数据压缩成一个数据流;
数据发送模块负责利用HTTP协议,将压缩打包后的数据流发送到客户端;
数据接收模块负责客户端利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件,以及客户端向服务端请求文件下载。
一种基于Zip压缩方式的打包下载方法,客户端向服务端请求文件下载,Zip读取服务端需要下载的文件数据将文件数据压缩成一个数据流,利用HTTP协议,将压缩打包后的数据流发送到客户端,客户端再利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件。
结合附图利用上述系统及方法,对本发明做进一步说明。
对本发明的内容以Java语言的实现为例,使用HttpClient的HTTP协议客户端编程工具包完成请求的发送以及接受文件数据来描述实现过程。
正如发明内容中所描述的,本发明中基于Zip压缩技术的打包下载方法主要包括:文件读取模块、压缩打包模块、数据发送模块、数据接收模块。
其中文件读取模块将文件已二进制流的方式读入内存缓存,压缩打包模块通过Zip压缩技术的算法对数据进行压缩编码并打包,数据发送模块通过输出流处理器将压缩编码后的二进制数据流,利用HTTP协议发送到客户端,数据接收则是通过输入流处理器利用HTTP协议接收服务端发送的二进制数据流,并将接收到的二进制数据流通过输出流处理器写到本地,形成一个Zip文件。整个打包下载过程的流处理器链接方式如附图1所示。
文件和文件夹的读取,如图2所示,对于文件夹采用递归的方式读取文件夹数据,对于文件则直接添加文件对象并通过输入流处理器FileInputStream和BufferedInputStream链接读取文件数据。
对于压缩打包以及数据发送,如附图3所示,通过流处理器链接FileInputStream和BufferedInputStream将文件数据以二进制流的方式读入内存缓存区,然后将缓存区的二进制数据流通过流处理器BufferedOutputStream输出到Zip输出流处理器ZipOutputStream,该流处理器会对输入的二进制数据进行压缩编码并打包,最后将压缩编码后的二进制数据输出到流处理器ServletOutputStream,该流处理器将输入的二进制流通过HTTP协议发送到客户端。
客户端发送和接收请求时通过HttpClient的HTTP协议客户端编程工具包完成。使用该包的HttpPost类对象向服务端发送打包下载的请求,通过调用HTTP响应对象HttpResponse的getEntity方法获取HttpClient的HTTP协议体对象HttpEntity,并继续调用获取到的HttpEntity对象的getContent方法获取输入流处理器InputStream对象,通过该InputStream输入流处理器便可读取服务端发送来的二进制数据,并存入内存缓存区,最后通过输出流处理器链接BufferedOutputStream和FileOutputStream将读入缓存的二进制数据输出到本地Zip文件,如附图4所示。
Claims (7)
1.一种基于Zip压缩方式的打包下载方法,其特征是客户端向服务端请求文件下载,Zip读取服务端需要下载的文件数据将文件数据压缩成一个数据流,利用HTTP协议,将压缩打包后的数据流发送到客户端,客户端再利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件。
2.根据权利要求1所述的一种基于Zip压缩方式的打包下载方法,其特征是Zip读取文件数据以二进制流的方式读入内存缓存,将缓存区的二进制数据进行压缩编码并打包成一个数据流。
3.根据权利要求2所述的一种基于Zip压缩方式的打包下载方法,其特征是Zip利用流处理器读取文件数据以二进制流的方式读入内存缓存,将缓存区的二进制数据通过流处理器输出到Zip另一流处理器,该流处理器对输入的二进制数据进行压缩编码并打包成一个数据流。
4.根据权利要求3所述的一种基于Zip压缩方式的打包下载方法,其特征是Zip读取服务端需要下载的文件数据的步骤:
步骤1:获取文件夹的子文件夹和子文件路径的字符串数组a,定义临时变量i=0,Zip输出流处理器;
步骤2:遍历路径数据a的元素,当前路径为pathname;
步骤3:判断pathname是否为路径,是,则调用Zip输出流处理器对象的putNextEntry方法,添加pathname对应的文件夹对象,重复步骤1-3;否则调用Zip输出流处理器对象的putNextEntry方法添加pathname对应的文件对象,以缓存方式通过输入流处理器将文件数据以二进制流读入内存缓冲区,至结束。
5.根据权利要求1所述的一种基于Zip压缩方式的打包下载方法,其特征是客户端发送和接收请求通过HttpClient的HTTP协议客户端编程工具完成。
6.一种基于Zip压缩方式的打包下载系统,其特征是包括文件读取模块、压缩打包模块、数据发送模块和数据接收模块;
文件读取模块负责Zip读取服务端需要下载的文件数据;
压缩打包模块负责将文件数据压缩成一个数据流;
数据发送模块负责利用HTTP协议,将压缩打包后的数据流发送到客户端;
数据接收模块负责客户端利用HTTP协议接收服务端发送的数据流,并将接收到的数据流输出到本地,生成Zip文件,以及客户端向服务端请求文件下载。
7.根据权利要求6所述的一种基于Zip压缩方式的打包下载系统,其特征是文件读取模块中Zip读取文件数据以二进制流的方式读入内存缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510592147.9A CN105306531A (zh) | 2015-09-17 | 2015-09-17 | 一种基于Zip压缩方式的打包下载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510592147.9A CN105306531A (zh) | 2015-09-17 | 2015-09-17 | 一种基于Zip压缩方式的打包下载方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105306531A true CN105306531A (zh) | 2016-02-03 |
Family
ID=55203274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510592147.9A Pending CN105306531A (zh) | 2015-09-17 | 2015-09-17 | 一种基于Zip压缩方式的打包下载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105306531A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360462A (zh) * | 2021-08-10 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种文件处理方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950299A (zh) * | 2010-09-21 | 2011-01-19 | 浙江大学 | 一种移动widget的zip文档格式的压缩与验证方法 |
US20120167074A1 (en) * | 2010-12-24 | 2012-06-28 | Microsoft Corporation | On-demand or incremental remote data copy |
CN103607444A (zh) * | 2013-11-14 | 2014-02-26 | 北京国双科技有限公司 | 应用程序中Zip压缩包的下载处理方法和装置 |
CN103888513A (zh) * | 2014-02-25 | 2014-06-25 | 世纪龙信息网络有限责任公司 | 服务器端多文件下载方法及系统 |
-
2015
- 2015-09-17 CN CN201510592147.9A patent/CN105306531A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950299A (zh) * | 2010-09-21 | 2011-01-19 | 浙江大学 | 一种移动widget的zip文档格式的压缩与验证方法 |
US20120167074A1 (en) * | 2010-12-24 | 2012-06-28 | Microsoft Corporation | On-demand or incremental remote data copy |
CN103607444A (zh) * | 2013-11-14 | 2014-02-26 | 北京国双科技有限公司 | 应用程序中Zip压缩包的下载处理方法和装置 |
CN103888513A (zh) * | 2014-02-25 | 2014-06-25 | 世纪龙信息网络有限责任公司 | 服务器端多文件下载方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360462A (zh) * | 2021-08-10 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种文件处理方法、装置、设备及可读存储介质 |
WO2023015830A1 (zh) * | 2021-08-10 | 2023-02-16 | 苏州浪潮智能科技有限公司 | 一种文件处理方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mosko et al. | All-In-One Streams for Content Centric Networks | |
CN102355426B (zh) | 实现离线文件传输的方法和系统 | |
JP5819416B2 (ja) | データ記憶とデータ送信の最適化 | |
US10965732B2 (en) | Streaming zip | |
CN101640692A (zh) | 文件下载服务方法和系统 | |
WO2016107339A1 (zh) | 一种批量发送消息的方法和装置 | |
US20140089463A1 (en) | Dynamic Utilization of Condensing Metadata | |
CN102065098A (zh) | 网络节点之间数据同步的方法和系统 | |
EP2988512B1 (en) | System and method for reconstructable all-in-one content stream | |
CN102111437A (zh) | 一种基于soap扩展的web服务传输压缩方法 | |
CA3157076A1 (en) | Partial downloads of compressed data | |
CN104768079A (zh) | 多媒体资源分发方法、装置及系统 | |
CN103701860A (zh) | 小文件的网络传输与接收方法及装置、和网络传输系统 | |
CN102497436B (zh) | 一种基于http协议的网络文件存储方法及系统 | |
CN101420324B (zh) | 一种网管系统及其代理软件的版本更新方法 | |
CN103888513B (zh) | 服务器端多文件下载方法及系统 | |
CN104572964A (zh) | 一种压缩文件的解压方法和装置 | |
CN105205151A (zh) | 在移动端节约浏览器页面流量的方法及系统 | |
CN100589439C (zh) | 一种提高消息服务器处理效率的方法 | |
CN105306531A (zh) | 一种基于Zip压缩方式的打包下载方法 | |
CN110309117A (zh) | 一种高可用区块链存储方法 | |
CN108134811B (zh) | 目标文件分发或下载的方法、装置和系统 | |
CN114124939A (zh) | 一种预缓存文件处理方法、装置及文件预缓存系统 | |
CN106897052A (zh) | Apk文件压缩方法及装置 | |
US20140214768A1 (en) | Reducing backup bandwidth by remembering downloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160203 |
|
RJ01 | Rejection of invention patent application after publication |