一种基于分块及元信息的断点续传的方法

文档序号:9306809阅读:401来源:国知局
一种基于分块及元信息的断点续传的方法
【技术领域】
[0001] 本发明属于文件存储系统通讯领域,具体涉及一种基于分块及元信息的断点续传 的方法。
【背景技术】
[0002] 随着现代IT系统的发展,数据的规模越来越庞大,因此很多公司都采用了文件存 储的形式保存非结构化数据,如图片、视频、文档等。在日常进行数据文件上传和下载操作 中,如遇数据量很大,由于网络不稳定等原因导致数据上传下载失败的情况,采用文件存储 形式保存的数据需要全部重新上传或下载,这样既浪费时间,又浪费流量,甚至可能出现多 次上传或下载失败的情况,导致用户体验很差。
[0003] 在这些问题上,专利申请"一种云存储文件断点续传的方法和装置"(【申请号】 201310675109. 0)做了相关研究,其提出的方法主要为:上传时记录文件大小、文件整体摘 要、文件已上传大小、文件已上传部分的摘要、文件唯一标识。通过对文件大小及文件整体 摘要判断是否是需要断点上传的文件,通过已上传大小和已上传文件部分摘要判断从什么 地方上传文件。该申请提出的方法在一定程度上解决了数据断点上传问题。然而该专利在 使用时存在此问题:上传时请求需要知道文件整体摘要和文件整体大小,这样就需要在上 传前遍历文件、计算文件摘要,因而消耗一定的资源;当上传文件请求较多、上传文件较大 时,资源消耗可能会比较大。
[0004]专利"基于SIP的文件断点续传方法"(授权公告号:CN101883144B)提供了一 种基于SIP的文件断点续传方法,该方法包括以下步骤:Sl:文件接收方接收发送方的文件 传输请求;S2 :所述文件接收方构造应答,并将文件传输请求中包含的SIPURI和文件名称 与本地记录的发送方的SIPURI和文件名称进行匹配,若匹配上,则将上次断点产生时未接 收到的文件区块的位置信息添加到所述应答的SDP消息体中;S3 :文件发送方接收所述应 答,判断其中是否包含所述未接收到的文件区块的位置信息,若未包含该区块的位置信息, 则传输整个文件,否则只传输接收方未接收到的文件区块。如此流程为断点上传流程,未能 检验文件是否已经上传完成,可能出现上传多次同一文件的情况;如此流程为断点下载流 程,文件接收方接收发送方的文件传输请求,使得接收方不能自行定义需要接收的文件。
[0005]"文件断点续传方法及装置"(专利【申请号】201410593386. 1)提供了一种文件断 点续传方法及装置,所述方法包括:接收待下载文件的下载指令信息,根据所述下载指令信 息在本地存储器中获取所述待下载文件对应的已下载数据;计算所述已下载数据的报文摘 要信息;在所述报文摘要信息与传输中断时存储的报文摘要信息相同时,从断点处起下载 所述待下载文件的未下载数据。上述方法实现了在断点续传之前对存储在本地存储器中的 待下载文件的已下载数据的完整性的检测和校验,从而保证了断点续传所获得的文件的可 用性,提高了断点续传文件的安全性。然而用户不能自定义一次下载的数据大小,不能保证 一次下载的成功率,如下载中断,则需进行下一次断点续传,增加计算保报文摘要信息次数 的不确定性,当下载文件请求较多、下载文件较大时,资源消耗可能会比较大。

【发明内容】

[0006] 为了解决现有的问题,本发明目的是,提出一种基于分块及元信息的断点续传的 方法,以提高上传、下载传输速率及数据一致性,节省网络传输时间及资源。
[0007] 本发明的目的的实现基于如下技术方案:
[0008] -种基于分块及元信息的断点续传的方法,包括数据存储方法、断点上传方法和 断点下载方法;
[0009] 数据存储方法,一个数据保存在存储服务器时,能够有多个版本数据,但其中只能 有一个完备版本数据一一即数据完整的数据,各个版本数据拆分为多个数据块,具体数据 分块方法为:
[0010] 步骤一、按照指定数据块大小,将一个数据拆分为多个数据块,除最后一个数据块 外,其余数据块按顺序编号、数据块大小为指定数据块大小,最后一个数据块大小为实际数 据块大小;
[0011] 步骤二、为各个数据块生成对应的数据块元信息,元信息包含数据块添加时间、数 据块编号、数据块大小、数字签名、KEY(-个字符串,含数据ID、版本号、数据完备标识符) 以及数据块的其他标识参数(如文件类型、图片大小等);
[0012] 断点上传方法,包括以下步骤:
[0013] 步骤一、用户调用客户端的上传接口,输入上传参数:输入流、数据ID、版本号、数 字签名;
[0014] 步骤二、客户端向服务器端发起读此ID的此版本号数据的最后一个数据块元信 息的请求;
[0015] 步骤三、服务器端接收到客户端的请求后,取此ID的此版本号数据的最后一个数 据块元信息;如不存在即表示是一次新上传任务,则返回新上传消息给客户端;如存在最 后一个数据块元信息即表示是一次续传任务,则读取元信息中KEY的数据完备标识符;如 为完备状态即表示数据已上传完整,则返回已完成上传消息到客户端;如KEY中数据完备 标识符为不完备状态即表示数据未上传完整,再检验此元信息中所记录的数字签名和输入 的数字签名是否一致,如不一致,则返回错误消息到客户端,如一致,则返回此ID的此版本 号数据的最后一个数据块元信息到客户端;
[0016] 步骤四、客户端得到服务器端返回的消息,如为新上传消息,则从第一个数据块开 始按指定数据块大小逐块上传数据;如为已完成上传消息,则提示用户"已完成上传"并结 束此上传进程;如为错误消息,则提示用户"数字签名不一致"并结束此上传进程;如此ID 的此版本号数据的最后一个数据块元信息不完备状态,则从最后一个数据块编号的下一个 数据块开始按指定数据块大小逐块上传数据,服务器端接收完一个数据块后,为数据块生 成对应的数据块元信息,元信息中KEY的数据完备标识符为不完备状态,再接收下一个数 据块;若用户还未上传到最后一个数据块上传就中断了,则再重新调用上传接口进行下一 次上传,进入步骤一,若用户上传到最后一个数据块,进入步骤五;
[0017] 步骤五、客户端标记最后一个数据块为结束块,并上传结束块;
[0018] 步骤六、服务器端接收完结束块后,为结束块生成数据块元信息,元信息中KEY的 数据完备标识符为完备状态,删除在此版本号添加时间之前的所有数据(包括不完备版本 数据和完备版本数据),保证只有一个完备版本数据,即完成断点上传;
[0019] 断点下载方法,具体包括以下步骤:
[0020] 步骤一、用户调用客户端的下载接口,在客户端输入下载参数:输出流、数据ID、 完备数据版本号、下载起始位、下载结束位;
[0021] 步骤二、客户端向服务端发起读此数据ID的此版本号数据的各个数据块元信息 的请求;
[0022] 步骤三、服务器端接收到客户端的请求后,读取此ID的此版本号数据的各个数据 块元信息,如不存在,则返回错误消息给客户端,如存在则返回给客户端;
[0023] 步骤四、客户端得到服务器端返回的消息,如为错误消息,则提示用户"数据不存 在",结束下载进程;如为此ID的此版本号数据的各个数据块元信息,则计算下载的起始位 置,具体为
[0024] 步骤1、客户端按数据块编号的由小到大顺序逐块读取对应数据块元信息;
[0025] 步骤2、用输入的下载起始位按数据块编号的由小到大顺序逐块减去数据块元信 息中所记录的数据块编号的大小,直至差值小于或等于〇 ;
[0026] 若差值小于0,则下载的起始位置为最后一个数据块编号得
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1