logo好方法网

一种基于块传输的FTP服务器断点下载方法及装置


技术摘要:
本发明公开了一种基于块传输的FTP服务器断点下载方法及装置,该方法包括:步骤S1,接收一下载请求,判断下载目标路径下是否有对应文件存在;步骤S2,当下载目标路径下存在对应文件,获取待下载文件对应的下载记录,根据下载记录获取断点标记以及本地文件偏移量,并生成  全部
背景技术:
随着网络技术的发展,目前已进入了数据共享时代,FTP服务器下载是一种最为常 见的数据共享方式,在网络数据分享中具有广泛的应用,在很多场合可以满足网络用户对 共享数据、有效与可靠传输的要求。FTP是FileTransfer  Protocol(文件传输协议)的缩写, 用来在两台计算机或异构网络间互相传送文件。相比其他其他协议,FTP协议用到两个TCP 连接,一个是命令链路用于服务器与客户端之间传送命令,另一个则是数据链路,用来上传 和下载各种格式的数据。FTP服务器进程由两大部分组成:一是主进程用于接收客户端的请 求,另外有若干个从属进程负责处理单个的请求。 FTP服务器主要为用户提供文件上传和下载功能。然而,随着需要共享的文件越来 越大,服务器下载过程中遇到的问题也越来越多。其中,文件下载过程中由于各种原因导致 文件下载非正常结束是数据分享过程中经常遇到的问题。一旦遇到这个问题,传统技术中 一般只能从头开始下载,数据传输效率低下。 为了解决这个问题,FTP服务器断点续传技术也随之出现,即由于各种原因造成的 文件传输终止,下次继续传输时能够从本次终止的地方开始传输,避免重复下载数据,提高 了数据的有效性和传输的高效性。 服务器断点续传技术其实就是在文件传输的过程中记录发送的进度,当出现网络 中断或者用户手动停止的情况下断开连接,下次传输的时候就只需传输剩余部分文件。具 体地,目前客户端实现断点下载的步骤主要有以下几步:首先,向服务器发送“REST 本地文 件长度”命令告诉服务器,客户端要进行断点下载;其次,向服务器发送“RETR 文件名”命 令,通知服务器要下载的文件名,此时服务器开始定位文件指针读文件并发送数据;再次, 客户端定位本地文件指针(文件末尾);最后,两端准备工作都完成以后客户端创建socket, 以被动或者主动方式建立数据通道,循环调用recv接收数据并追加入本地文件。 然而,随着存储技术与分布式技术的快速发展,服务器存储文件的方式也发生了 改变,很多服务器内部存储文件的数据结构也变得相对复杂。这种情况下不易获取文件的 大小、且根据文件大小定位指针困难,这就使得向服务器发送“REST 本地文件长度”的命令 无法有效的执行。因此,实有必要提出一种技术手段,以解决上述问题,实现FTP服务器断点 续传下载的技术。
技术实现要素:
为克服上述现有技术存在的不足,本发明之目的在于提供一种基于块传输的FTP 服务器断点下载方法及装置,从而为不便根据文件大小进行指针定位的服务器提供断点续 传方式。 4 CN 111600945 A 说 明 书 2/11 页 为达上述目的,本发明提供一种基于块传输的FTP服务器断点下载方法,包括如下 步骤: 步骤S1,接收一下载请求,判断所述下载请求的下载目标路径下是否有对应文件 存在,所述下载请求至少包括下载目标路径以及待下载文件名; 步骤S2,当所述下载请求的下载目标路径下存在对应文件,获取该待下载文件对 应的下载记录,根据该下载记录获取断点标记以及本地文件偏移量,并根据获得的断点标 记生成断点续传请求发送至服务器端以进行断点续传下载; 步骤S3,设置下载参数,并传送至服务器端,然后再生成下载请求发送至服务器, 所述下载参数至少包括设置为块传输模式的文件传输模式以及类型为EBCDIC的文件类型; 步骤S4,循环从服务器端读取数据,基于块说明信息对所读取的数据进行循环解 析,并记录解析过程中解析得到的标记信息以及本地文件偏移量; 步骤S5,当下载结束、用户手动停止或者其他原因导致下载停止时,根据下载解析 过程中所记载的信息生成所述下载记录。 优选地,于步骤S1后,还包括如下步骤: 若所述下载请求的下载目标路径下没有对应文件存在,则直接进入步骤S3。 优选地,步骤S2进一步包括: 步骤S200,根据下载目标路径与待下载文件名以及下载目标路径下的本地文件的 时间戳于客户端查询与待下载文件名对应的下载记录; 步骤S201,若有对应的下载记录,则获取所述下载记录中的文件下载标记,根据该 文件下载标记判断该待下载文件是否已经下载完毕; 步骤S202,若该文件下载标记为结束,则结束本次下载流程;否则从该下载记录中 取出服务器端的相关标记信息作为断点标记,以及本地文件偏移量,根据获得的断点标记 生成断点续传请求发送至服务器端。 优选地,若无对应的下载记录,则于客户端中删除该下载目标路径下的本地文件, 并进入步骤S3。 优选地,于步骤S3中,所述下载参数包括但不限于文件传输模式、CHKptint参数以 及文件类型,设置文件传输模式为块传输模式,于该传输模式下,服务器端将文件分为数据 块传输,每一个数据块包括3个字节的块说明信息和数据信息,所述CHKptint参数用于表示 每隔多少块一个mark标记,设置文件类型为EBCDIC。 优选地,所述块说明信息的第一个字节存储该块说明信息后的数据信息的类型, 第一个字节为16表示块说明信息后存储的数据信息为mark标记,32表示数据块中疑似有 错;64表示数据块结尾文件结束;128表示数据块结尾记录结束,所述块说明信息的后两个 字节用于表示数据信息的数据长度。 优选地,于步骤S5中,其解析过程包括如下步骤: 步骤S500,从服务器端读取数据,将解析剩余数据集合与读取到的数据依次放入 至解析集合; 步骤S501,判断所述解析集合长度是否小于3个字节,若当前解析集合长度小于3 个字节则将解析集合中的数据转移至解析剩余数据集合中并返回步骤S500; 步骤S502,若所述解析集合长度大于或等于3个字节,则于解析集合获取依次获取 5 CN 111600945 A 说 明 书 3/11 页 每个数据块的块说明信息,根据块信息对所述解析集合进行循环解析。 优选地,于步骤S502中,首先根据块说明信息起始坐标从所述解析集合解析长度 为3个字节的块说明信息,根据解析获得的块说明信息判断块说明信息的长度与块说明信 息中的数据长度之和是否大于解析集合长度;若为大于,则将该解析集合中的数据转移至 解析剩余数据集合中并返回步骤S500,若为小于或等于,则进一步判断该块说明信息中的 第一个字节表示的数据类型,若为mark标记类型,则记录该块说明信息后的mark标记并将 本地文件长度与偏移量差值设为0,并将该块说明信息对应的数据块信息于解析集合中删 除,若不为标记类型,则将该块说明信息后长度为length的数据写入本地文件,并记录本地 文件大小和本地文件大小与偏移量差值,同时删除解析集合中该块说明信息对应的数据块 信息;循环执行上述过程,直至解析集合的数据解析完毕。 优选地,于步骤S500中,若从服务器端读取不到数据则下载流程结束。 为达到上述目的,本发明还提供一种基于块传输的FTP服务器断点下载装置,应用 于客户端,包括: 下载请求接收处理单元,用于接收一下载请求,判断所述下载请求的下载目标路 径下是否有对应文件存在; 断点续传判断处理单元,于所述下载请求的下载目标路径下存在对应文件,获取 该待下载文件对应的下载记录,根据该下载记录获取断点标记以及本地文件偏移量,并根 据获得的断点标记生成断点续传请求发送至服务器端以进行断点续传下载; 下载参数设置单元,用于设置下载参数,并传送至服务器端,然后再生成下载请求 发送至服务器,所述下载参数至少包括设置为块传输模式的文件传输模式以及类型为 EBCDIC的文件类型; 循环解析单元,用于循环从服务器端读取数据,基于块说明信息对所读取的数据 进行循环解析,并记录解析过程中解析得到的标记信息以及本地文件偏移量; 下载记录生成单元,用于当下载结束、用户手动停止或者其他原因导致下载停止 时,根据下载解析过程中所记载的信息生成下载记录。 与现有技术相比,本发明一种基于块传输的FTP服务器断点下载方法及装置基于 块模式传输,由服务器端提供文件下载进度的标记,客户端解析服务端传输内容并记录相 关标记,在客户自己手动停止下载或者因其他原因导致无法继续下载时,对文件下载状态 以及标记进行存储留待继续下载时备用,而当再次进行该文件下载时,从下载记录中取出 标记信息,向服务器端发送“REST 标记信息”命令告诉服务器端以进行断点下载,同时从下 载记录中取出相关偏移量来定位客户端文件指针以写入本地文件,为不便根据文件大小进 行指针定位的服务器提供断点续传方式。 附图说明 图1为本发明一种基于块传输的FTP服务器断点下载方法的步骤流程图; 图2为本发明一种基于块传输的FTP服务器断点下载装置的系统架构图; 图3为本发明实施例中基于块传输的FTP服务器断点下载方法的文件下载流程图; 图4为本发明实施例中文件下载解析流程图。 6 CN 111600945 A 说 明 书 4/11 页
下载此资料需消耗2积分,
分享到:
收藏