一种用于重复文件上传的方法和系统的制作方法

文档序号:7821476阅读:299来源:国知局
一种用于重复文件上传的方法和系统的制作方法
【专利摘要】本发明涉及一种用于重复文件上传的方法和系统,其方法包括:客户端对文件大小不小于第一阈值的文件计算校验段校验值,服务端对校验段校验值和文件大小进行快速匹配;若快速匹配成功,客户端计算整个文件的校验值,服务端对文件校验信息进行精确匹配;若精确匹配成功,服务端创建待上传文件到已有存档记录的映射,否则保存文件校验信息并等待文件上传后形成存档记录。当快速匹配无匹配项时可以避免对整个待上传文件校验信息的计算,同时保证了待上传文件与服务端所匹配到文件的一致性;通过在精确匹配时预存文件校验信息,避免了服务端的重复计算文件校验信息。
【专利说明】一种用于重复文件上传的方法和系统

【技术领域】
[0001]本发明涉及数据处理【技术领域】,尤其是涉及一种用于重复文件上传的方法和系统。

【背景技术】
[0002]随着互联网技术及移动设备的普及,人们创造和分享的信息量日益增加。网络存储,如网盘、云盘,可以为用户提供只需一次上传,即可在多种终端上随时进行数据访问的高效信息处理方式。然而,在网络存储的海量数据中,必然存在大量重复数据,主要体现为不同用户各自上传的公共资源。这些重复数据的存在,一方面在其上传过程占用了大量网络带宽,另一方面对网络存储服务器造成了不必要的压力。
[0003]为了减少重复数据造成的浪费,目前普遍采用的技术有基于重复数据校验的文件上传和重复数据删除。其中,当前基于重复数据校验的文件上传方案,其特征及一些局限性包括:
[0004](I)将文件分块,以数据块为单位,进行重复文件的对比,因此可以对相似文件中重复数据块进行处理。如中国专利CN102571952A公开一种传输文件的系统及方法,对待上传文件进行分块对比。然而,在网络带宽较小的情况下,以数据块为单位进行对比的方式,需要在客户端和服务器之间产生大量请求和应答,进而影响传输效率。同时,服务端需保存和对比每个数据块的校验值,建立大量数据块之间的映射关系,对服务器的压力很大,往往需要独立的服务器进行处理,不利于在中小型服务端设备上实现。
[0005](2)如果不将文件分块,则现有方案在服务端查找是否存在相同文件前,需要直接计算待上传文件全部数据内容的校验值。如中国专利CN103929453A公开一种上传数据的处理方法、装置及系统,其中根据所述待上传数据的索引信息,确定所述待上传数据在存储服务器中是否已经存储。当文件较大时,计算过程耗时明显。个别改进方案提出抽取文件中部分内容计算校验值,以缩短计算时间,但不能保证待上传文件与服务端所查找文件的整体一致性。


【发明内容】

[0006]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种用于重复文件上传的方法和系统,可应对网络带宽受限的情况,减少客户端与服务器的通信,降低服务器内部处理压力,并实现客户端待上传文件与服务器已有文件的快速精确比对。
[0007]本发明的目的可以通过以下技术方案来实现:
[0008]一种用于重复文件上传的方法,实现文件从客户端到服务端的传输,包括以下步骤:
[0009](I)客户端判断待上传文件是否不小于第一阈值,若是,则执行步骤(2),若否,则客户端上传文件,执行步骤(8);
[0010](2)客户端抽取待上传文件的校验段,并计算校验段校验值;
[0011](3)服务端根据校验段校验值和文件大小进行快速匹配,判断服务端是否存在匹配项,若是,则执行步骤(4),若否,则客户端上传文件,执行步骤(8);
[0012](4)客户端计算整个待上传文件的整体校验值;
[0013](5)服务端根据校验段校验值、整体校验值和文件描述信息进行精确匹配,判断服务端是否存在匹配项,若是,则执行步骤¢),若否,则客户端上传文件,执行步骤(7);
[0014](6)服务端添加待上传文件到已有存档记录的映射记录;
[0015](7)服务端记录校验段校验值、整体校验值与文件描述信息,形成待上传文件对应的存档记录并保存;
[0016](8)服务端接收待上传文件,并计算其文件校验信息,形成待上传文件对应的存档记录并保存。
[0017]所述步骤(2)中,校验段的抽取方式包括:
[0018]a、由从待上传文件首部提取大小为校验段长度的数据内容作为校验段;或
[0019]b、将待上传文件的大小为参数,通过预先定义的处理方式得到校验段的起始位置,提取大小为校验段长度的数据内容作为校验段。
[0020]所述步骤(2)中,校验段校验值的计算方法包括MD5算法。
[0021]所述步骤(4)中,计算整个待上传文件的整体校验值时,采用的计算方法包括MD5算法和/或SHA-1散列算法和/或CRC32校验算法。
[0022]所述存档记录至少包括记录号、文件校验信息和文件描述信息,所述文件校验信息包括文件校验段校验值和整体校验值,所述文件描述信息包括文件名称、客户端修改时间和文件大小。
[0023]所述步骤(7)替换为:
[0024]服务端记录校验段校验值、整体校验值与文件描述信息,并向客户端发送记录号和匹配失败指令,客户端检测从计算文件校验信息到文件正式上传期间,文件数据是否变化,若是,则直接上传文件,执行步骤(8),若否,则将接收到的记录号作为上传标识之一进行文件上传,服务端根据记录号将接收文件的信息和已保存的信息组成完整的存档记录。
[0025]所述步骤(8)中,服务端计算接收文件的文件校验信息时包括:
[0026]判断文件大小是否不小于第二阈值,若是则计算文件校验信息,将文件校验信息与接收文件的信息组成存档记录,若否,则直接保存接收文件的信息形成存档记录。
[0027]—种用于重复文件上传的系统,实现文件从客户端到服务端的传输,包括设置在客户端中的校验值计算模块、文件管理模块和第一通信模块以及设置在服务端中的校验值匹配模块、存档信息管理模块和第二通信模块,其中,
[0028]所述校验值计算模块包括:
[0029]用于在文件大小不小于第一阈值时,计算校验段校验值的单元;和
[0030]当快速匹配存在匹配项时,计算整个待上传文件的整体校验值的单元;
[0031]文件管理模块包括:
[0032]用于判断文件大小与第一阈值关系的单元;
[0033]从文件大小不小于第一阈值的待上传文件中提取校验段并传递给校验值计算模块的单元;和
[0034]用于将待上传文件传递给第一通信模块的单元;
[0035]第一通信模块包括:
[0036]用于上传校验值信息和文件描述信息的单元;
[0037]文件大小小于第一阈值时、快速匹配返回不存在匹配项时或精确匹配返回不存在匹配项时,将待上传文件上传到服务端的单元;和
[0038]接收服务端应答的单元;
[0039]校验值匹配模块用于实现快速匹配和精确匹配,包括匹配校验段校验值、待上传文件的整体校验值和文件描述信息,并将匹配结果传递给第二通信模块;
[0040]存档信息管理模块包括:
[0041]用于保存存档记录的单元;
[0042]当服务端精确匹配成功时,添加待上传文件到对应已有存档记录映射的单元;和
[0043]当服务端接收的文件大小不小于第二阈值且不存在文件校验信息时,计算并保存文件校验信息的单元;
[0044]第二通信模块包括:
[0045]用于接收客户端上传的校验值或文件的单元;和
[0046]用于将快速匹配、精确匹配及文件上传的处理结果返回客户端的单元。
[0047]所述文件管理模块还包括:
[0048]监测从计算整个待上传文件的整体校验值到文件正式上传期间,文件数据是否发生变化的单元。
[0049]所述存档信息管理模块还包括:
[0050]精确匹配失败的文件超过一定时间未上传,则清除已保存的相应的文件校验值和文件描述信息的单元。
[0051]与现有技术相比,本发明的有益效果为:
[0052]1、服务端保存了文件的校验信息,包括校验段校验值文件与整个文件的整体校验值,同时服务于快速匹配和精确匹配。通过先将校验段校验值上传到服务端进行匹配,可以快速判断服务端是否可能存在相同内容;如果不匹配,则直接上传,避免了对整个文件进行不必要的校验值计算所耗费的时间。
[0053]2、在上传期间,若经过精确匹配且最终上传时文件数据未发生变化,服务端可预先保存由客户端计算的整体校验值,避免了重复计算造成的资源浪费;如果该文件最终未上传或上传过程中文件已改变,服务端将清除超过一定时间的无效记录,重新计算检验值信息。
[0054]综上,本发明通过快速匹配,避免了可能对整个文件计算校验值所耗费的时间,力口快了重复文件的校验过程;通过精确匹配,保证了待上传文件与服务端匹配到文件的整体一致性;通过预存整体校验值,并对文件进行非分块校验方式,可更好地应用于网络带宽受限的场景,并降低了服务器压力。

【专利附图】

【附图说明】
[0055]为了更加清晰地阐述本发明实施例的细节,下面给出了实施例相关的一些流程图、应用场景图和模块交互图。显而易见地,下面的附图给出了实施例的示例性而非限定性说明。对于本领域的普通技术人员,在不付出创造性劳动的前提下,可以根据这些附图得到其它的附图。
[0056]图1为本发明的文件上传方法第一实施例流程图;
[0057]图2为本发明的文件上传方法第二实施例流程图;
[0058]图3为本发明的服务端添加整体校验值第一实施例流程图;
[0059]图4为本发明的服务端添加整体校验值第二实施例流程图;
[0060]图5为本发明的文件上传系统实施例的应用场景图;
[0061]图6为本发明的文件上传系统实施例的各模块及模块间交互图。

【具体实施方式】
[0062]结合实施例附图,下面将对本发明的目的、构思、技术方案和优点做详细说明。应当理解,所述实施例是为了对本发明进行说明,并不以任何方式限制本发明的内容。通过实施例,本领域的普通技术人员可以更好地理解
【发明内容】
。在不付出创造性劳动的前提下,本领域普通技术人员获得的所有其相关实施例,都应该属于本发明的保护范围。
[0063]当前基于重复文件校验的文件上传方式,需要直接计算整个文件的校验值,耗时较长且对于非重复文件的计算造成了不必要的浪费。个别改进方案只抽取文件中部分内容进行校验,不能保证待上传文件与服务端所匹配文件的整体一致性。
[0064]本发明的特征之一,提出了基于快速匹配和精确匹配两次匹配过程,来加快重复文件的校验过程。
[0065]图1给出了本发明文件上传方法的第一实施例流程,其包括:
[0066]步骤101:由客户端判断待上传文件大小是否不小于第一阈值。如果待上传文件大小不小于第一阈值,则转至步骤102 ;否则,则转至步骤111。
[0067]第一阈值是客户端预先定义的需要进行重复校验的文件大小,第一阈值可以是MB级别,如10M,可以根据实际应用中的网络状况进行估算和调整获得,也可以是由其它方式获得的适合于提升重复文件上传效率的阈值大小。
[0068]步骤102:客户端从待上传文件中抽取校验段,计算校验段校验值,将校验段校验值与文件大小上传到服务端。
[0069]抽取校验段,是为了进行快速匹配。校验段不宜过长,否则失去了客户端快速计算、服务端快速匹配的意义。校验段也不宜过短,否则对文件没有代表性,大量不同文件中可能存在很多相同校验段。上传文件的大小,是为了进一步提高快速匹配的准确率。
[0070]对于校验段长度的确定,可以是KB级别,如200K,也可以是根据客户端计算能力来确定的其它大小。校验段长度的影响:校验段越长,文件匹配的结果越准确,但客户端计算时间越长;校验段越短,文件匹配的结果越不准确,但客户端进行校验值计算的时间越短。
[0071]对于校验段位置的确定,可以从文件首部截取,可以从文件其它特定位置截取,也可以将文件大小作为参数,通过客户端和服务端相同的函数处理获得校验段的起始位置。
[0072]对于校验段校验值的计算,可以采用消息摘要算法第五版MD5,可以采用SHA-1散列算法,也可以是客户端和服务端约定的其它计算方式。由于截取的校验段长度较短,即使较为复杂的校验方式,耗费的时间也可以满足快速匹配。
[0073]应当注意:本发明中并不将校验段限定为文件中一个连续的数据区域。在文件不同区域多次抽取总长度等于校验段长度的内容,将所抽取内容串连起来,并计算校验值,是可选的。
[0074]已有某些方案也存在抽取文件中部分内容进行校验的方法,但只是将其作为唯一校验匹配方式。显而易见地,抽取部分内容进行校验的局限性在于,无论抽取内容的方法如何复杂,只要抽取的内容没有覆盖整个文件,都不能保证待上传文件与服务端所匹配到文件的整体一致性。
[0075]步骤103:服务端判断是否存在校验段校验值、文件大小的匹配项。该步骤进行快速匹配,如果不存在匹配项,则服务端不存在相同文件,转至步骤111 ;如果存在匹配项,则服务端可能存在相同文件,转至步骤104。
[0076]在本实施例中,将服务端已存在的文件称为文件原始存档,每个原始存档对应一条存档记录。存档记录至少包括记录号和文件指纹,所述但不限于文件校验信息和文件描述信息,所述文件校验信息包括文件校验段校验值和整体校验值,所述文件描述信息包括文件名称、客户端修改时间和文件大小。
[0077]应当注意:如果快速匹配存在匹配项,只是说明服务端可能存在相同文件,这是由于校验段和文件大小并不能用来进行整个文件的一致性判断。具体原因,在步骤102中已有阐述。
[0078]步骤104:客户端计算整个待上传文件的整体校验值,将整体校验值、校验段校验值与文件描述信息上传到服务端。
[0079]计算文件的整体校验值,可以采用消息摘要算法第五版MD5和/或SHA-1散列算法,也可以是客户端和服务端约定的其它计算方式。在本实施例中,同时采用MD5校验和CRC32校验。显而易见地,可以采用其它校验算法进行独立应用或组合应用来计算文件校验值。
[0080]实施例中上传了文件的校验段校验值和文件描述信息,其中文件描述信息包括但不限于文件的名称、客户端修改时间和文件大小。
[0081]步骤105:服务端是否存在待上传文件指纹信息的匹配项。该步骤进行精确匹配,如果不存在匹配项,则服务端不存在相同文件,转至步骤107 ;如果存在匹配项,则服务端存在相同文件,转至步骤106。
[0082]所匹配的文件指纹,结合步骤103中所述,本实施例中包括但不限于文件的MD5校验值和CRC32校验值,文件校验段校验值和文件大小。
[0083]步骤106:服务端添加待上传文件到已有存档记录的映射,上传结束。
[0084]本实施例中,若服务端存在待上传文件的匹配项,则添加由待上传文件到已有存档记录的映射记录。映射关系往往是多对一的,即对于重复文件,经由同一用户或者不同用户多次上传后,都与同一存档记录建立映射关系。映射记录中不包括文件指纹。服务端进行快速匹配和精确匹配时,只在存档记录中进行匹配。
[0085]普遍意义上,用户对所上传重复文件的操作,将分为对映射记录的操作和经过映射后对文件原始存档的操作两部分。本段以下举例说明,是为了本发明相关内容的叙述完整性,不包括在本发明权利要求内容中,也不应造成本发明与其它发明相冲突:用户对重复文件的读取,一般首先通过映射记录获取存档记录,再从中获取文件原始存档的实际存储位置;当指向存档记录的映射记录不小于2条时,删除操作只删除映射记录。
[0086]步骤107:服务端记录文件指纹,并返回记录号与匹配失败信息。
[0087]此时,服务端经过精确匹配,确定不存在与待上传文件相同的文件。由于客户端后续操作中可能将整个文件进行上传,因此实施例中服务端预先保存文件的指纹。若文件在上传过程中没有改变,等待完成文件上传后,服务端将上传文件信息与指纹结合,可以产生一条完整的存档记录。本发明的另一特征,提出利用这种处理方式来避免服务端重复计算整体校验值造成的资源浪费;如果该文件最终未上传或上传过程中文件内容已改变,服务端将清除超过一定时间的无效记录。
[0088]步骤108:客户端检测从计算整个待上传文件的校验值到文件正式上传期间,文件数据是否不变。如果从计算待上传文件的校验值到文件正式上传期间,文件数据不变,则转至步骤109,否则转至步骤111。
[0089]步骤109:客户端上传文件、记录号到服务端。
[0090]客户端将服务端返回的记录号作为文件上传时的参数之一。
[0091]步骤110:服务端根据记录号,将已保存的文件指纹和上传文档信息组成一条完整的存档记录,上传结束。
[0092]当服务端接收到文件的同时,如果存在记录号,则说明该文件的指纹已经存在于服务端,因此可以直接将指纹与文件其它信息组合为一条完整的存档记录,不需要在服务端重复计算整体校验值。
[0093]步骤111:客户端上传文件,服务端计算该文件的校验信息,将校验信息与上传文件信息组成存档记录,上传结束。
[0094]本步骤上传的文件,包括文件大小小于第一阈值的文件,快速匹配无匹配项的文件,精确匹配无匹配项且从计算文件校验值到文件正式上传期间文件数据发生变化的文件。服务端接收到文件后,首先生成不包含校验信息的存档记录,然后采用图3或图4中的流程计算整体校验值,并将计算的校验信息写入存档记录。
[0095]图2给出了本发明文件上传方法的第二实施例流程。与第一实施例相比,客户端在文件上传期间对文件采用不同的处理。第一实施例中,客户端需监测上传过程中文件数据内容是否发生变化,并按照步骤108进行相应的处理。第二实施例中,客户端在文件上传过程中对文件进行锁定,因此不需要监测文件数据内容是否变化。对于第一阈值选择、文件校验段处理、校验值计算方式等已有内容的阐述和原理性说明,第二实施例与第一实施例一致。第二实施例的步骤包括:
[0096]步骤201:由客户端判断待上传文件大小是否不小于第一阈值。如果待上传文件大小不小于第一阈值,则转至步骤202 ;否则,则转至步骤208。
[0097]步骤202:客户端计算待上传文件的校验段校验值。此步骤中,客户端同时将校验段校验值与文件大小上传到服务端。
[0098]步骤203:服务端快速匹配是否成功。快速匹配时,判断是否存在校验段校验值、文件大小的匹配项,如果不存在匹配项,则服务端不存在相同文件,转至步骤208 ;如果存在匹配项,则服务端可能存在相同文件,转至步骤204。
[0099]步骤204:客户端计算整个待上传文件的校验信息。客户端同时将文件校验值、校验段校验值与文件描述信息上传到服务端。
[0100]步骤205:服务端精确匹配是否成功。服务端查找待上传文件指纹的匹配项,如果不存在匹配项,则服务端不存在相同文件,转至步骤207;如果存在匹配项,则服务端存在相同文件,转至步骤206。
[0101]步骤206:服务端添加待上传文件到已有存档记录的映射,上传结束。
[0102]步骤207:服务端记录整体校验值,等待文件上传后形成完整的存档记录,上传结束。此步骤可分为3个子过程:
[0103](I)服务端记录文件指纹,并返回记录号与匹配失败信息;
[0104](2)客户端上传文件、记录号到服务端;
[0105](3)服务端根据记录号,将已保存的文件指纹和上传文档信息组成一条完整的存档记录,上传结束。
[0106]步骤208:客户端上传文件,服务端计算该文件的校验信息,并将校验信息与上传文件信息组成存档记录,上传结束。
[0107]本步骤上传的文件,包括文件大小小于第一阈值的文件和快速匹配无匹配项的文件。服务端接收到文件后,首先生成不包含校验信息的存档记录,然后采用图3或图4中的流程计算文件校验信息,并将计算的校验信息写入存档记录。
[0108]图3给出了服务端添加文件校验信息第一实施例的流程。服务端添加文件校验信息的意义在于:服务端的某些存档记录中可能不存在校验信息,如图1步骤111和图2步骤208中上传的文件,需要计算校验段校验值和整体校验值,以获得与服务端进行文件的快速匹配和精确匹配需求相一致的存档记录。图3所示实施例中,对单个或多个不存在校验信息的存档记录进行处理,该存档记录条目可来自于服务端接收文件后推送给处理模块的消息队列,其步骤包括:
[0109]步骤301:获取不存在校验信息的存档记录。
[0110]步骤302:文件大小是否不小于第二阈值。如果文件大小不小于第二阈值,则转至步骤303 ;否则流程结束。
[0111]第二阈值是服务端预先定义的需要计算校验值的文件大小,第二阈值与第一阈值、文件校验段长度之间无必然联系,但是一般存在以下关系:校验段长度 < 第二阈值<第一阈值。这是基于以下考虑:客户端所设定的第一阈值可能是变化的,如服务端存储空间小且处理能力强时,第一阈值可设定为较小值,第二阈值不小于第一阈值,才能保证服务端进行匹配时,查找到所有可能的存档记录;第一阈值和第二阈值一般不会小于校验段长度,因为对小文件直接传输的效率已经很高。
[0112]本实施例中,将第二阈值设为与校验段长度一致,即也为KB级别,如200K。显而易见,第二阈值越大,服务端的计算压力越小,可以根据实际应用的需求或服务器计算能力等方面综合考虑来确定第二阈值大小。
[0113]步骤303:计算文件校验信息,并保存到存档记录,流程结束。
[0114]本步骤采用与客户端一致的计算方式,计算文件的校验信息,如整个文件的MD5校验值、CRC32校验值和文件校验段校验值。其中,文件校验段的获取方式也必须与客户端保持一致。
[0115]图4给出了服务端添加文件校验信息第二实施例的流程。该流程中,自动循环获取不存在校验信息的存档记录并计算,其步骤包括:
[0116]步骤401:获取不存在校验信息的存档记录。
[0117]步骤402:文件大小是否不小于第二阈值。如果文件大小不小于第二阈值,则转至步骤403 ;否则转至404。第二阈值的确定,与图3所示实施例一致。
[0118]步骤403:计算文件校验信息,并保存到存档记录。
[0119]步骤404:是否存在未处理的存档记录。如果存在,则转至步骤401 ;如果不存在,则流程结束。
[0120]图5给出了本发明的文件上传系统实施例的应用场景。从图中看出,本发明的文件上传方法适用于普遍的客户端、服务器架构。
[0121]图5中的客户端可以是一个或多个,包括但不限于PC端、Web端及移动设备端;月艮务器可以是一个或多个,多个服务端之间可以相互独立或组成存储服务网络。客户端的应用实体,可以是现有的、正在研发的或将来研发的可以完成图6中客户端功能的通信设备。服务端的应用实体,可以是现有的、正在研发的或将来研发的可以提供图6中服务端功能的通信设备。
[0122]图6给出了本发明的文件上传系统实施例的各模块及模块间交互过程。其中的模块及各模块功能如下:
[0123]客户端包括文件管理模块601、校验值计算模块602和第一通信模块603,客户端各模块的功能具体为:
[0124]文件管理模块601:维护待处理文件列表;存储第一阈值、校验段长度及获取方式;判断待上传文件大小与第一阈值的关系;从文件大小不小于第一阈值的待上传文件中提取校验段并传递给校验值计算模块;监测从计算整个待上传文件的校验值到并上传文件期间,文件数据是否发生变化,或在文件上传过程中对文件进行锁定;将待发送文件传递给通信模块;
[0125]校验值计算模块602:实现与服务端一致的校验值计算方法,如MD5校验和CRC32校验;文件大小不小于第一阈值时,计算校验段校验值;当快速匹配存在匹配项时,计算整个待上传文件的校验值;
[0126]第一通信模块603:与服务端建立通信,上传校验值信息或文件并接收服务器应答;上传文件大小小于第一阈值的文件;当快速匹配返回不存在匹配项时,将文件上传到服务端;当精确匹配返回不存在匹配项时,将文件上传到服务端。
[0127]服务器包括存档信息管理模块604、校验值匹配模块605和第二通信模块606,服务器各模块的功能:
[0128]存档信息管理模块604:维护服务端已有文件的存档信息;存储第二阈值、校验段长度及获取方式:实现与客户端一致的校验值计算方法,如MD5校验和CRC32校验;当服务端精确匹配待上传文件成功时,添加待上传文件到已有存档记录的映射;当服务端接收的文件大小不小于第二阈值且不存在整体校验值时,计算并保存整体校验值到存档记录;月艮务端进行精确匹配时预先保存整体校验值,若对应文件最终未上传或上传过程中文件内容改变,则该校验信息无效,清除超过一定时间的无效记录。
[0129]校验值匹配模块605:匹配校验段校验值、待上传文件的整体校验值和文件描述信息,并将匹配结果传递给通信模块;
[0130]第二通信模块606:与客户端建立通信,接收客户端上传的校验值或文件,将快速匹配、精确匹配及文件上传的处理结果返回客户端。[0131 ] 各个模块之间的交互包括:
[0132]文件管理模块601和校验值计算模块602:需要快速匹配时,文件管理模块将抽取的校验段传递给校验值计算模块;需要精确匹配时,文件管理模块将文件内容传递给校验值计算模块;
[0133]显而易见,由于模块601和模块602都在客户端,上述文件内容的传递,只需模块601将文件或文件校验段的地址、长度等信息传递给模块602,其它模块之间的交互,如果模块同时处于客户端或服务端,则文件内容的传递过程与此类似;
[0134]文件管理模块601和第一通信模块603:文件管理模块将需上传文件内容传递给通信模块;
[0135]校验值计算模块602和第一通信模块603:校验值计算模块将校验段校验值、文件校验值传递给通信模块;
[0136]存档信息管理模块604和校验值匹配模块605:校验值匹配模块要求获取存档信息管理模块中的存档记录;存档信息管理模块将存档记录返回给校验值匹配模块;
[0137]存档信息管理模块604和第二通信模块606:通信模块接收到无校验信息的文件,若文件大小不小于第二阈值,则通知存档信息管理模块计算校验信息并存档记录。
[0138]校验值匹配模块605和第二通信模块606:通信模块通知校验值匹配模块进行快速匹配;通信模块通知校验值匹配模块进行精确匹配;校验值匹配模块返回匹配结果给通信模块。
[0139]第一通信模块603和第二通信模块606:模块603向模块606发送请求,包括校验信息匹配请求,文件上传请求;模块606向模块603返回应答,包括快速匹配结果、精确匹配结果7文件上传结果。
【权利要求】
1.一种用于重复文件上传的方法,实现文件从客户端到服务端的传输,其特征在于,包括以下步骤: (1)客户端判断待上传文件是否不小于第一阈值,若是,则执行步骤(2),若否,则客户端上传文件,执行步骤(8); (2)客户端抽取待上传文件的校验段,并计算校验段校验值; (3)服务端根据校验段校验值和文件大小进行快速匹配,判断服务端是否存在匹配项,若是,则执行步骤(4),若否,则客户端上传文件,执行步骤(8); (4)客户端计算整个待上传文件的整体校验值; (5)服务端根据校验段校验值、整体校验值和文件描述信息进行精确匹配,判断服务端是否存在匹配项,若是,则执行步骤¢),若否,则客户端上传文件,执行步骤(7); (6)服务端添加待上传文件到已有存档记录的映射记录; (7)服务端记录校验段校验值、整体校验值与文件描述信息,形成待上传文件对应的存档记录并保存; (8)服务端接收待上传文件,并计算其文件校验信息,形成待上传文件对应的存档记录并保存。
2.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述步骤(2)中,校验段的抽取方式包括: a、由从待上传文件首部提取大小为校验段长度的数据内容作为校验段;或 b、将待上传文件的大小为参数,通过预先定义的处理方式得到校验段的起始位置,提取大小为校验段长度的数据内容作为校验段。
3.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述步骤(2)中,校验段校验值的计算方法包括MD5算法。
4.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述步骤(4)中,计算整个待上传文件的整体校验值时,采用的计算方法包括MD5算法和/或SHA-1散列算法和/或CRC32校验算法。
5.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述存档记录至少包括记录号、文件校验信息和文件描述信息,所述文件校验信息包括文件校验段校验值和整体校验值,所述文件描述信息包括文件名称、客户端修改时间和文件大小。
6.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述步骤(7)替换为: 服务端记录校验段校验值、整体校验值与文件描述信息,并向客户端发送记录号和匹配失败指令,客户端检测从计算文件校验信息到文件正式上传期间,文件数据是否变化,若是,则直接上传文件,执行步骤(8),若否,则将接收到的记录号作为上传标识之一进行文件上传,服务端根据记录号将接收文件的信息和已保存的信息组成完整的存档记录。
7.根据权利要求1所述的用于重复文件上传的方法,其特征在于,所述步骤(8)中,月艮务端计算接收文件的文件校验信息时包括: 判断文件大小是否不小于第二阈值,若是则计算文件校验信息,将文件校验信息与接收文件的信息组成存档记录,若否,则直接保存接收文件的信息形成存档记录。
8.一种用于重复文件上传的系统,实现文件从客户端到服务端的传输,其特征在于,包括设置在客户端中的校验值计算模块、文件管理模块和第一通信模块以及设置在服务端中的校验值匹配模块、存档信息管理模块和第二通信模块,其中, 所述校验值计算模块包括: 用于在文件大小不小于第一阈值时,计算校验段校验值的单元;和 当快速匹配存在匹配项时,计算整个待上传文件的整体校验值的单元; 文件管理模块包括: 用于判断文件大小与第一阈值关系的单元; 从文件大小不小于第一阐值的待上传文件中提取校验段并传递给校验值计算模块的单元;和 用于将待上传文件传递给第一通信模块的单元; 第一通信模块包括: 用于上传校验值信息和文件描述信息的单元; 文件大小小于第一阈值时、快速匹配返回不存在匹配项时或精确匹配返回不存在匹配项时,将待上传文件上传到服务端的单元;和接收服务端应答的单兀; 校验值匹配模块用于实现快速匹配和精确匹配,包括匹配校验段校验值、待上传文件的整体校验值和文件描述信息,并将匹配结果传递给第二通信模块; 存档信息管理模块包括: 用于保存存档记录的单元; 当服务端精确匹配成功时,添加待上传文件到对应已有存档记录映射的单元;和当服务端接收的文件大小不小于第二阈值且不存在文件校验信息时,计算并保存文件校验信息的单元; 第二通信模块包括: 用于接收客户端上传的校验值或文件的单元;和 用于将快速匹配、精确匹配及文件上传的处理结果返回客户端的单元。
9.根据权利要求8所述的用于重复文件上传的系统,其特征在于,所述文件管理模块还包括: 监测从计算整个待上传文件的整体校验值到文件正式上传期间,文件数据是否发生变化的单元。
10.根据权利要求8所述的用于重复文件上传的系统,其特征在于,所述存档信息管理模块还包括: 精确匹配失败的文件超过一定时间未上传,则清除已保存的相应的文件校验值和文件描述信息的单元。
【文档编号】H04L29/08GK104410692SQ201410712783
【公开日】2015年3月11日 申请日期:2014年11月28日 优先权日:2014年11月28日
【发明者】蓝夏军, 张玮 申请人:上海爱数软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1