背景技术
随着云计算和互联网的快速发展,用户会产生大量的数据文件,同时也会收藏保存很多影视、软件资料等,此时需要将本地的文件上传到服务器上。
目前,用户将本地的一个文件上传到服务器时,通常需要扫描本地文件,计算唯一标识,然后直接和服务器建立连接,判断文件在服务器是否存在,如果不存在将本地的文件进行分片并计算分片校验信息,单独上传每个独立分片和校验信息,可以采用多线程的方式上传文件。
现有的文件上传流程如图1所示:
1.浏览器(上传)通过上传逻辑服务器获取上传入口地址;
2.浏览器(上传)通过扫描本地文件,对文件进行分片和计算每个分片的校验信息,采用多线程方式将每个独立分片和对应的校验信息上传到存储接口服务器;
3.当存储接口服务器收到对应的分片后,同时对分片进行校验,然后与浏览器上传的分片校验信息进行比较,如果一致则写入存储服务器上,否则丢弃该数据分片,通知客户端重新上传数据分片;
4.浏览器(下载)通过存储接口服务器下载网络文件,存储接口服务器在存储服务器中读取需要下载的网络文件,传递给浏览器(下载)。
在上传文件时,上传及计算文件分片校验信息需要消耗本地大量的CPU计算资源,如果有很多文件同时需要计算校验信息,会使得本地计算校验信息的时间增加,文件越大,计算校验信息越多。
同理,用户需要从本地上传文件到网络服务器上,为了保证文件的正确性,在上传过程中通常需要对文件进行扫扫描、分片,然后计算文件的分片校验信息,同时将文件分片和校验信息上传给服务器端,服务器端收到数据分片和校验信息后,计算校验信息后在和客户端上传的校验信息比较来确定数据的正确性。如果文件很大,本地扫描计算文件的校验信息需要很久,同时如果之前上传的文件已经删除,重新上传文件还需要再次上传校验数据。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过将上传过程和P2SP多源下载技术相结合,复用下载系统收录的文件分片校验信息,无需上传文件分片校验信息,减少上传过程的文件分片校验信息的计算量。
图2示出了本发明实施例提供的文件上传校验方法的实现流程,详述如下:
在步骤S201中,存储根据上传组件上传的文件分片计算出的文件分片校验信息,以及下载客户端上报的文件分片校验信息;
作为本发明的实施例中,在存储上传组件上传的文件分片计算出的文件分片校验信息,以及下载客户端上报的文件分片校验信息时,首先,接收根据上传组件上传的文件分片计算出的文件分片校验信息,以及下载客户端上报的文件分片校验信息。然后,将根据上传组件上传的文件分片计算出的文件分片校验信息,以及下载客户端上报的文件分片校验信息写入数据库。
P2SP技术在文件下载方面获得了广泛的应用,它将大量的数据传输转移到了客户端,同时为了保证下载数据的正确性,在服务器端保存了大量的文件分片校验信息。
本发明实施例中,下载客户端上报的文件分片校验信息是基于P2SP下载技术所收集的文件分片校验信息,原本这些文件分片校验信息为客户端下载进行文件校验,在本发明实施例中为上传文件进行文件分片校验,这样就可以无需上传重复的文件分片校验信息。
在步骤S202中,将存储的文件分片校验信息与利用上传组件上传的文件分片计算的文件分片校验信息进行比较,验证上传组件上传的文件分片是否正确。
由于文件上传时需要对文件进行去重,判断该文件是否在服务器存在,作为本发明的一个优选实施例,该文件上传校验方法还包括以下步骤:
1.接收上传成功的文件的唯一标识,并记录所有在云存储服务器上存储的文件的唯一标识;
2.与上传组件通信,查询上传组件上传的文件的唯一标识是否存在,如果不存在,向上传组件返回需要上传文件的服务器地址。
在计算文件的唯一标识时,通常需要扫描整个文件计算全文的哈希(Hash)值作为文件的唯一标识,该过程由于涉及大量的文件IO操作,对于大文件而言非常消耗时间。
在本发明的一个实施例中,为了快速进行文件的去重,减少大文件在客户端需要的扫描时间和CPU资源的占用,大大减少用户在上传文件之前等待的时间,上传组件上传的文件的唯一标识为上传组件从部分文件内容计算的唯一标识,不扫描整个文件,只有当部分文件的唯一标识在服务器上不存在时,才计算全文的文件标识。
在本发明的实施例中,由于服务器存在每个分片的文件校验信息,可以只通过部分分片的校验信息,例如只取头、中、尾部三个文件分片校验信息(也可以取其他的文件分片)计算得到文件的唯一标识。
图3示出了本发明实施例提供的文件上传校验系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
校验信息存储服务器31存储根据上传组件35上传的文件分片计算出的文件分片校验信息,以及下载客户端37上报的文件分片校验信息。
在本发明的实施例中,校验信息存储服务器31包括校验信息数据库311和入库服务器312。
校验信息数据库311存储文件分片校验信息。
入库服务器312接收存储接口服务器32根据上传组件35上传的文件分片计算出的文件分片校验信息,以及下载客户端37上报的文件分片校验信息,写入校验信息数据库311。
存储接口服务器32将校验信息存储服务器31存储的文件分片校验信息与利用上传组件35上传的文件分片计算的文件分片校验信息进行比较,验证上传组件35上传的文件分片是否正确,将验证正确的文件分片写入云存储服务器36。
作为本发明的一个优选实施例,文件上传校验系统还包括存储索引服务器33和上传逻辑服务器34。
存储索引服务器33接收存储接口服务器32写入的上传成功的文件的唯一标识,以及记录所有在云存储服务器36上存储的文件的唯一标识。
上传逻辑服务器34与上传组件35通信,查询上传组件35上传的文件的唯一标识在存储索引服务器33是否存在,如果不存在,向上传组件35返回需要上传文件的存储接口服务器地址。
作为本发明的一个实施例,为了快速进行文件的去重,减少大文件在客户端需要的扫描时间和CPU资源的占用,大大减少用户在上传文件之前等待的时间,上传组件35上传的文件的唯一标识为上传组件35从部分文件内容计算的唯一标识。
由于校验信息数据库311存在每个文件分片的文件分片校验信息,可以只通过部分文件分片校验信息,例如只取头、中、尾部三片文件分片校验信息(也可以取其他的文件分片)计算得到文件的唯一标识。
在本发明的实施例中,当文件部分内容计算的唯一标识在存储索引服务器33中不存在时,上传组件35上传的文件的唯一标识为上传组件35从全文文件计算的唯一标识。
图4示出了本发明实施例提供的文件上传校验系统的业务流程,详述如下:
1.下载客户端若下载过程中发现是新资源也就是不能使用P2SP多源下载的文件,计算文件的分片校验信息和文件的唯一标识,上报到入库服务器。
2.入库服务器将下载客户端新上报的文件校验信息或者存储接口服务器同步给入库服务器的文件分片校验信息写入校验信息数据库,丰富校验信息数据库中的内容,供存储接口服务器查询和获取文件分片的校验信息。
3.上传组件扫描文件的部分内容并计算文件的唯一标识,然后向上传逻辑服务器查询文件是否已经上传,如果没有就从上传逻辑服务器获取存储接口服务器地址。
4.存储索引服务器记录所有在云存储服务器上存在文件的唯一标识等信息,上传逻辑服务器向存储索引服务器查询待上传文件是否存在。若不存在则通过上传逻辑服务器返回上传组件需要上传文件的存储接口服务器地址。
5.上传组件向存储接口服务器上传具体的文件分片,存储接口服务器返回上传成功的分片,同时为用户更新上传进度。
6.存储接口服务器读取校验信息数据库,获取每个独立分片的校验信息,和利用上传组件上传的每个独立分片计算出来的校验信息进行比较,确保上传文件的正确性,如果校验信息数据库中不存在对应的校验信息,则基于上传组件上传的文件分片计算分片校验信息。
7.存储接口服务器将验证正确的文件分片写入云存储服务器。
8.存储索引服务器接收存储接口服务器写入上传成功的文件的唯一标识。
9.存储接口服务器将新上传文件的分片校验信息同步给入库服务器,通过入库服务器将分片校验信息写入校验信息数据库。
本发明实施例通过将上传过程和P2SP多源下载技术相结合,复用服务器已经存在的分片校验信息,减少额外上传校验信息的时间,加快整个文件的上传过程。同时,通过部分文件内容来计算唯一标识,减少大文件在客户端需要的扫描时间和CPU资源的占用,快速进行文件去重。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。