本技术涉及文件上传,具体地,涉及一种文件上传方法、电子设备及计算机可读介质。
背景技术:
1、文件上传是云存储系统中的重要功能。尤其是对一些小型私有云而言,不仅可以避免上传不必要的文件,而且可以保证同一个文件只会存储一份,从而避免浪费带宽以及浪费存储成本。
2、目前的文件上传方法通常都是基于哈希hash算法(例如md5算法和sha系列算法)来实现,具体的,客户端首先根据hash算法计算出要上传的文件的hash值,然后将携带有该hash值的数据请求发送至服务端,服务端检测该hash值是否已存在,从而判断出自身是否已存在该文件,并将相应的检测结果返回至客户端。然而,这种方法存在着需要长时间占用cpu资源、等待时间较长、安全性较低等诸多方面的缺陷。
技术实现思路
1、本技术旨在一定程度上解决相关技术中的技术问题之一。为此,本技术提供了一种文件上传方法、电子设备及计算机可读介质。
2、作为本技术的第一个方面,提供一种文件上传方法,用于客户端,其中,所述方法包括:
3、根据预设的校验值确定方式以及与服务端预先约定的随机数据范围,确定出待上传文件的校验值以及分片摘要值集合;
4、向服务端发送携带有所述校验值以及分片摘要值集合的文件开始上传请求消息;
5、在接收到所述服务端发送的未完整上传通知消息的情况下,根据所述未完整上传通知消息中携带的上传任务标识和碰撞检测条件,对所述待上传文件进行上传;其中,所述碰撞检测条件是所述服务端根据所述文件开始上传请求消息中携带的分片摘要值集合所生成的;
6、在接收到所述服务端发送的已完整上传通知消息的情况下,解析所述已完整上传通知消息获得文件存储信息;其中,所述已完整上传通知消息是所述服务端在确定出本地存在具有所述校验值的文件且根据该文件确定出的分片摘要值集合与所述文件开始上传请求消息中携带的分片摘要值集合相匹配的情况下发送的。
7、可选地,所述根据所述未完整上传通知消息中携带的上传任务标识和碰撞检测条件,对所述待上传文件进行上传,包括:
8、在根据所述碰撞检测条件确定出碰撞检测未通过的情况下,根据所述待上传文件生成文件普通上传请求消息,并将所述文件普通上传请求消息发送至所述服务端;
9、在根据所述碰撞检测条件确定出碰撞检测通过的情况下,根据所述上传任务标识生成文件上传进度请求消息,并将所述文件上传进度请求消息发送至所述服务端;
10、接收所述服务端发送的文件上传进度响应消息,根据所述文件上传进度响应消息对所述待上传文件进行上传。
11、可选地,所述根据所述文件上传进度响应消息对所述待上传文件进行上传包括:
12、获取所述文件上传进度响应消息中携带的已上传字节数量;
13、从所述待上传文件中与所述已上传字节数量相匹配的上传起始处,向所述服务端上传所述待上传文件中的数据。
14、可选地,所述根据预设的校验值确定方式以及与服务端预先约定的随机数据范围,确定出待上传文件的校验值以及分片摘要值集合,包括:
15、根据所述待上传文件的大小、预设的起始数据块大小以及预设的切分数据块大小,将所述待上传文件划分为起始数据块和多个切分数据块;
16、根据所述待上传文件的大小、所述预设的起始数据块大小、所述预设的切分数据块大小、所述起始数据块和多个切分数据块、预设的校验值算法,确定出所述待上传文件的校验值;
17、根据与所述服务端预先约定的随机数据范围、所述起始数据块和多个切分数据块,确定出分片集合及其分片摘要值集合;其中,一个所述分片为一个所述数据块,所述分片值摘要与所述分片一一对应。
18、可选地,所述根据所述待上传文件的大小、所述预设的起始数据块大小、所述预设的切分数据块大小、所述起始数据块和多个切分数据块、预设的校验值算法,确定出所述待上传文件的校验值,包括:
19、根据所述待上传文件的大小、所述预设的起始数据块大小以及所述预设的切分数据块大小,确定出样本数据块间隔数量;
20、根据所述样本数据块间隔数量从所述多个切分数据块中确定出多个样本数据块;
21、根据所述待上传文件的大小、所述起始数据块以及所述多个样本数据块,确定出所述待上传文件的摘要值;
22、根据预设的校验值算法,确定出所述摘要值的校验和;
23、根据所述摘要值和所述校验和,确定出待上传文件的校验值。
24、作为本技术的第二个方面,提供一种文件上传方法,用于服务端,其中,所述方法包括:
25、接收客户端发送的文件开始上传请求消息,获取其中携带的待上传文件的校验值以及分片摘要值集合;其中,所述校验值以及分片摘要值集合是所述客户端根据预设的校验值确定方式以及与所述服务端预先约定的随机数据范围所确定的;
26、在确定出本地存在具有所述校验值的文件且根据该文件确定出的分片摘要值集合与所述文件开始上传请求消息中携带的分片摘要值集合相匹配的情况下,向所述客户端发送携带有文件存储信息的已完整上传通知消息;
27、在确定出所述待上传文件未完整上传的情况下,向所述客户端发送包括上传任务标识和碰撞检测条件的未完整上传通知消息,以供所述客户端根据所述上传任务标识和碰撞检测条件对所述待上传文件进行上传;其中,所述碰撞检测条件是所述服务端根据所述文件开始上传请求消息中携带的分片摘要值集合所生成的。
28、可选地,所述在确定出所述待上传文件未完整上传的情况下,向所述客户端发送包括上传任务标识和碰撞检测条件的未完整上传通知消息,包括:
29、在确定出本地存在具有所述校验值的文件且根据该文件确定出的分片摘要值集合与所述文件开始上传请求消息中携带的分片摘要值集合不匹配的情况下,以及在确定出本地不存在具有所述校验值的文件且也不存在与所述校验值相对应的未完成任务的情况下,均生成上传任务标识和碰撞检测条件,并将携带有该上传任务标识和碰撞检测条件的未完整上传通知消息发送至所述客户端;
30、在确定出本地不存在具有所述校验值的文件但存在与所述校验值相对应的未完成任务的情况下,生成碰撞检测条件,将携带有所述未完成任务的上传任务标识以及所述碰撞检测条件的未完整上传通知消息发送至所述客户端。
31、可选地,在确定出本地存在具有所述校验值的文件的情况下,所述方法还包括:
32、根据与所述客户端预先约定的随机数据范围,从本地存在的具有所述校验值的文件所对应的多个数据块中,确定出分片集合及其分片摘要值集合;其中,一个所述分片为一个所述数据块,所述分片值摘要与所述分片一一对应。
33、作为本技术的第三个方面,提供一种电子设备,其中,所述电子设备包括:
34、一个或多个处理器;
35、存储器,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本技术第一个方面所述的文件上传方法或本技术第二个方面所述的文件上传方法。
36、作为本技术的第四个方面,提供一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本技术第一个方面所述的文件上传方法或本技术第二个方面所述的文件上传方法。
37、在本技术实施例所提供的文件上传方法中,客户端根据预设的校验值确定方式以及与服务端预先约定的随机数据范围,确定出待上传文件的校验值以及分片摘要值集合,向服务端发送携带有所述校验值以及分片摘要值集合的文件开始上传请求消息,能够快速计算出用于服务端判断待上传文件是否已经完整上传的校验值及分片摘要值集合,有效提高文件上传效率、避免资源浪费和时间浪费;随后,客户端在接收到服务端发送的未完整上传通知消息的情况下,根据所述未完整上传通知消息中携带的上传任务标识和碰撞检测条件,对所述待上传文件进行上传,客户端通过服务端根据分片摘要值集合所生成的碰撞检测条件进行碰撞检测,能够进一步提高文件上传效率和安全性、避免资源浪费和时间浪费。客户端在接收到所述服务端发送的已完整上传通知消息的情况下,通过解析所述已完整上传通知消息能够直接获得文件存储信息,不必将待上传文件重复上传,进一步避免资源浪费和时间浪费。
1.一种文件上传方法,用于客户端,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述未完整上传通知消息中携带的上传任务标识和碰撞检测条件,对所述待上传文件进行上传,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述文件上传进度响应消息对所述待上传文件进行上传包括:
4.根据权利要求1所述的方法,其特征在于,所述根据预设的校验值确定方式以及与服务端预先约定的随机数据范围,确定出待上传文件的校验值以及分片摘要值集合,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述待上传文件的大小、所述预设的起始数据块大小、所述预设的切分数据块大小、所述起始数据块和多个切分数据块、预设的校验值算法,确定出所述待上传文件的校验值,包括:
6.一种文件上传方法,用于服务端,其特征在于,所述方法包括:
7.根据权利要求6所述的方法,其特征在于,所述在确定出所述待上传文件未完整上传的情况下,向所述客户端发送包括上传任务标识和碰撞检测条件的未完整上传通知消息,包括:
8.根据权利要求6或7所述的方法,其特征在于,在确定出本地存在具有所述校验值的文件的情况下,所述方法还包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1-8中任一项所述的文件上传方法。
