CN112532740A - 文件上传方法和装置、文件校验方法和装置 - Google Patents
文件上传方法和装置、文件校验方法和装置 Download PDFInfo
- Publication number
- CN112532740A CN112532740A CN202011438118.4A CN202011438118A CN112532740A CN 112532740 A CN112532740 A CN 112532740A CN 202011438118 A CN202011438118 A CN 202011438118A CN 112532740 A CN112532740 A CN 112532740A
- Authority
- CN
- China
- Prior art keywords
- fragment
- current
- hash value
- value corresponding
- uploading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Abstract
本申请涉及区块链技术,特别涉及一种文件上传方法,包括:将目标文件拆分成多个分片;依次遍历每个分片,对于遍历至的当前分片,确定前个分片对应的历史散列值;根据历史散列值和当前分片确定当前散列值,根据当前分片和当前散列值生成分片上传请求并发送至服务器,使得服务器基于当前分片和全局存储空间中存储的与前个分片对应的散列值,对当前散列值进行验证;当验证通过时触发对当前分片的下一个分片进行遍历,并返回对于遍历至的当前分片,确定前个分片所对应的历史散列值的步骤继续执行,直至将目标文件中的各个分片均成功上传至服务器。其中,服务器可将各分片存储在区块链中。采用本方法能够提高文件上传效率。
Description
技术领域
本申请涉及数据传输技术领域,特别是涉及一种文件上传方法和装置、文件校验方法和装置。
背景技术
随着计算机技术的发展,出现了数据传输技术,数据传输技术是将一个设备上的数据传输至其他的存储空间。在实际应用场景中,常常会涉及到需要将视频、音频、程序安装包、电子资料等文件进行传输的情况。
而对于大文件而言,在进行传输时通过会将大文件进行分片,采用分片方式来进行大文件上传。但是对于大文件的上传,文件校验通过会放在文件合并请求中,若中间某个分片出现不一致时只能在文件合并请求中发现并返回失败,导致文件传输效率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高文件传输效率的文件上传方法、装置、计算机设备和存储介质,以及文件校验方法、装置、计算机设备和存储介质。
一种文件上传方法,所述方法包括:
获取待上传的目标文件,并将所述目标文件拆分成多个分片;
依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
当验证通过时接收所述服务器下发的第一反馈信息,根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
在其中一个实施例中,所述根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,包括:
根据所述第一反馈信息,继续对所述多个分片进行遍历,以将所述当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;
将所述当前分片作为下次分片上传过程中所对应的前个分片,并将所述当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
在其中一个实施例中,所述根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,包括:
对所述前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;
对所述当前分片进行转换处理,得到对应的第二数组;
拼接所述第一数组和所述第二数组,得到第三数组;
对所述第三数组进行哈希运算,得到与所述当前分片对应的当前散列值。
在其中一个实施例中,所述发送的所述分片上传请求还用于指示所述服务器在所述当前分片所对应的当前散列值验证通过后,将所述当前散列值存储至所述全局存储空间中。
在其中一个实施例中,其特征在于,所述方法还包括:
当验证未通过时接收所述服务器下发第二反馈信息;
根据所述第二反馈信息,重新获取在所述当前分片之前上传的前个分片所对应的历史散列值,并基于所述历史散列值对所述当前分片进行重新上传。
一种文件传输装置,所述装置包括:
获取模块,用于获取待上传的目标文件,并将所述目标文件拆分成多个分片;
确定模块,用于依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
所述确定模块,还用于根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
发送模块,用于将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
接收模块,用于当验证通过时接收所述服务器下发的第一反馈信息;
遍历模块,用于根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待上传的目标文件,并将所述目标文件拆分成多个分片;
依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
当验证通过时接收所述服务器下发的第一反馈信息,根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待上传的目标文件,并将所述目标文件拆分成多个分片;
依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
当验证通过时接收所述服务器下发的第一反馈信息,根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
上述文件上传方法、装置、计算机设备和存储介质,在需要上传目标文件时,将目标文件拆分成多个分片,然后一个个的上传。在上传当前分片时,根据当前分片、以及当前分片的前一个分片所对应的历史散列值,确定与当前分片对应的当前散列值,并将当前散列值和当前分片共同上传至服务器。服务器在接收到当前散列值和当前分片后,会在全局存储空间中查找前次存储的与前个分片对应的散列值,以对当前散列值进行验证。当验证通过时,则表明上传的当前分片是合法合规的,进而终端可继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知客户端,避免了客户端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
一种文件校验方法,所述方法包括:
接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
在其中一个实施例中,所述方法还包括:
接收终端发送的文件合并请求,所述文件合并请求为所述终端在将所述目标文件中的各个分片均成功上传后触发生成;
响应于所述文件合并请求,将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
一种文件校验装置,所述装置包括:
接收模块,用于接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
查找模块,用于确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
校验模块,用于根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
存储模块,用于当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
反馈模块,用于向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
上述文件校验方法、装置、计算机设备和存储介质,接收终端发送的分片上传请求,根据该分片上传请求从全局存储空间中查找与在当前分片之前的前个分片对应的散列值。进而根据分片上传请求中携带的当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过该校验散列值对分片上传请求中的当前散列值进行验证。当验证通过时,则表明终端上传的当前分片是合法合规的,进而存储该当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中。向终端反馈第一反馈信息,以使得终端根据第一反馈信息继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知终端,避免了终端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
附图说明
图1为一个实施例中文件上传和/或文件校验方法的应用场景图;
图2(a)为一个实施例中文件上传方法的流程示意图;
图2(b)为一个实施例中对目标文件进行分片上传的原理示意图;
图3为一个实施例中文件校验方法的流程示意图;
图4为另一个实施例中文件上传装置的结构框图;
图5为一个实施例中文件校验装置的结构框图;
图6为一个实施例中计算机设备的内部结构图;
图7为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的文件上传和/或文件校验方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102获取待上传的目标文件,并将目标文件拆分成多个分片,。终端102依次遍历多个分片中的每个分片,并对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值。终端1022根据历史散列值和当前分片,确定与当前分片对应的当前散列值,并根据当前分片和当前散列值生成分片上传请求。终端102将分片上传请求发送至服务器104。服务器104在接收到分片上传请求后,确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值。服务器根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证。当验证通过时服务器104存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中。服务器104向终端102反馈第一反馈信息。终端102根据第一反馈信息,对当前分片的下一个分片进行遍历,并继续采用相同的方式对待上传的目标文件中的下个分片进行上传,直至将目标文件中的各个分片均成功上传至服务器104。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一个实施例中,如图2(a)所示,提供了一种文件上传方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
步骤S202,获取待上传的目标文件,并将目标文件拆分成多个分片。
其中,目标文件是用户意图进行上传的、可通过计算机设备承载的数据对象,具体可以是视频、音频、程序安装包、或电子资料等。具体地,终端可从本地或其他设备处获取待上传的目标文件,当检测到文件上传指令时,将该目标文件拆分成多个分片,这多个分片按照拆分的顺序可构成完整的目标文件。
在一个实施例中,终端存储有各种文件。用户可通过文件管理客户端,从终端上存储的文件中选中想要上传的目标文件。该文件管理客户端还可展示有上传界面,该上传界面中包括有上传控件。当用户点击或触摸该上传控件时,终端可自动将目标文件拆分成多个分片,并依次对各个分片分别进行上传。
步骤S204,依次遍历多个分片中的每个分片。
具体地,对于由目标文件所拆分得到的多个分片,终端可按照各个分片各自构成该目标文件的顺序,进行依次遍历。每遍历至一个分片时就执行将该分片进行上传的动作,在上传成功后则对下一个分片进行遍历。
步骤S206,对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值。
具体地,终端可依次遍历多个分片中的各个分片,对于当前遍历至的当前分片,确定在该当前分片之前上传的前个分片,并确定与该前个分片对应的散列值,也就是历史散列值。
在一个实施例中,对于首个分片的上传,终端可直接对该首个分片进行哈希处理,得到对应的散列值,进而将该首个分片和相对应的散列值上传至服务器。服务器对接收到的首个分片进行哈希运算得到验证散列值。当该验证散列值与接收到的散列值相同时,则判断验证通过。服务器存储该首个分片,并将首个分片所对应的散列值存储至全局存储空间中,以便下一个分片的校验使用。
步骤S208,根据历史散列值和当前分片,确定与当前分片对应的当前散列值,并根据当前分片和当前散列值生成分片上传请求。
具体地,终端可将该历史散列值合并至该当前分片中,得到合并后的分片。终端可对合并后的分片进行哈希运算,得到对应的当前散列值。终端可根据当前散列值和当前分片生成分片上传请求。
在一个实施例中,假设当前分片为分片i,该第分片i的前一个分片为分片i-1。终端可获取分片i-1所对应的散列值i-1,并将该散列值i-1合并到分片i所对应的流文件中,计算合并后的流文件的散列值i。终端根据分片i与本次计算得到的散列值i,生成当次的分片上传请求,并将该分片上传请求发送至服务器。
在一个实施例中,根据历史散列值和当前分片,确定与当前分片对应的当前散列值,包括:对前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;对当前分片进行转换处理,得到对应的第二数组;拼接第一数组和第二数组,得到第三数组;对第三数组进行哈希运算,得到与当前分片对应的当前散列值。
在一个实施例中,前个分片所对应的历史散列值的格式为十六进制字符串形式。终端可对前个分片所对应的历史散列值进行格式转换处理,得到对应的第一数组。可以理解,第一数组是数组格式的数据,比如称作bytes1。终端可对二进制流形式的当前分片进行转换处理,将其转换成数组形式,得到对应的第二数组,比如可称作bytes2。进而终端可将第一数组bytes1与第二数组bytes2合并为一个新的第三数组bytes3(bytes1的元素在前),使用md5(信息摘要算法,是一种密码散列函数)算法计算第三数组bytes3的hash值并转换为16进制字符串,得到与当前分片对应的当前散列值。
上述实施例中,可分别将历史散列值和当前分片都转换成数组形式的数据,再进行合并和哈希运算,可以方便快捷地得到与当前分片对应的、且唯一的当前散列值。
步骤S210,将分片上传请求发送至服务器,发送的分片上传请求用于指示服务器基于当前分片和全局存储空间中存储的与前个分片对应的散列值,对当前散列值进行验证。
具体地,终端可将分片上传请求发送至服务器。可以理解,该分片上传请求中携带有当前分片和历史散列值。服务器在接收到分片上传请求后,确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值。服务器根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证。当校验散列值和当前散列值相同时,则表示校验通过。当校验散列值与当前散列值不同时,则表明校验未通过。当校验通过时,服务器可存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中,存储的当前散列值会作为下一个分片校验时的散列值,以实现对下一个分片进行校验。
在一个实施例中,当校验通过时,服务器会向终端反馈表征校验通过的第一反馈信息,使得终端继续进行下一个分片的上传。当校验未通过时,服务器会向终端反馈表征校验未通过的第二反馈信息,使得终端重新上传该分片。
步骤S212,当验证通过时接收服务器下发的第一反馈信息,根据第一反馈信息,对当前分片的下一个分片进行遍历。
具体地,当验证通过时,终端会接收服务器反馈的表示校验通过的第一反馈信息,并根据该第一反馈信息对当前分片的下一个分片进行遍历。
在一个实施例中,根据第一反馈信息,对当前分片的下一个分片进行遍历,包括:根据第一反馈信息,继续对多个分片进行遍历,以将当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;将当前分片作为下次分片上传过程中所对应的前个分片,并将当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
在一个实施例中,终端在接收到第一反馈信息后,就知晓当前分片已成功上传至服务器,进而可继续开始下一个分片的上传。此时,终端可继续对多个分片进行遍历,以将当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片。终端可将当前分片作为下次分片上传过程中所对应的前个分片,并将当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。这样,就可不断循环的实现对各个分片的连续上传。
步骤S214,判断是否存在下一个分片,如果是跳转至步骤S206;如果否则跳转至步骤S216,结束分片上传的流程。
具体地,当终端在进行遍历时,如果发现当前分片之后没有了下一个分片,也就是该当前分片为最后一个分片时则结束分片上传流程,也就是实现了将目标文件中的各个分片均成功上传至服务器。而当该当前分片之后还有分片时,终端则将下一个分片作为下一个时刻遍历至的当前分片,从而跳转至步骤S206并继续执行,以采用链式的散列值相关的方式将下一个分片上传至服务器。这样不断的依次遍历依次上传,直至将目标文件中的各个分片均成功上传至服务器。
在一个实施例中,参考图2(b),图2(b)为一个实施例中对目标文件进行分片上传的原理示意图。如图2(b)所示,目标文本被拆分成了多个分片。终端对分片1进行哈希运算,得到对应的散列值1。在上传第二个分片时,终端将散列值1和分片2组合后再进行哈希运算,得到散列值2。终端将散列值2和分片2进行上传。这样不断地依次上传,对于第i个分片,终端将分片i-1计算出的散列值i-1合并到分片i中,计算合并后的流文件的散列值i,将分片i与本次计算得到的散列值i传到服务端。这个散列值i又会作为第i+1个分片上传时需要加入的散列值。直至终端将目标文件中的每个分片都实现了上传。若服务端对每个分片都依次校验通过,说明终端上传的目标文件是完整的,则在合并文件请求中无需对整个目标文件进行完整性校验,服务器可直接合并目标文件并落盘。
上述文件上传方法,在需要上传目标文件时,将目标文件拆分成多个分片,然后一个个的上传。在上传当前分片时,根据当前分片、以及当前分片的前一个分片所对应的历史散列值,确定与当前分片对应的当前散列值,并将当前散列值和当前分片共同上传至服务器。服务器在接收到当前散列值和当前分片后,会在全局存储空间中查找前次存储的与前个分片对应的散列值,以对当前散列值进行验证。当验证通过时,则表明上传的当前分片是合法合规的,进而终端可继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知客户端,避免了客户端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
在一个实施例中,该文件上传方法还包括分片重传的步骤,该步骤具体包括:当验证未通过时接收服务器下发第二反馈信息;根据第二反馈信息,重新获取在当前分片之前上传的前个分片所对应的历史散列值,并基于历史散列值对当前分片进行重新上传。
在一个实施例中,当服务器对当前散列值进行验证时发现验证未通过,则说明当前上传的当前分片有误,有可能被篡改了。此时服务器会向终端反馈表征验证未通过的第二反馈信息。进而终端在收到该第二反馈信息后可以重新进行当前分片的上传,直至将当前分片成功上传至服务器。
比如用户上传一个4M大小的分片,上传参数中的当前散列值为:0cc175b9c0f1b6a831c399e269772661,而服务端将该分片上传请求中的数据转换成byte数组后计算得到的校验散列值为:92eb5ffee6ae2fec3ad71c777531578f,则校验不通过,可以视为上传过程中分片文件或报文被篡改。此时服务器就通知终端进行重传。
上述实施例中,当服务器发现终端发送的分片上传请求中的当前散列值未通过验证时,则说明当前分片可能被篡改,则直接通知终端进行重传,可在问题发生之初就及时的发现并及时重传,可提高效率。并且将校验的压力分摊到每个分片的上传过程中,避免了资源的集中性耗用。
在一个实施例中,如图3所示,提供了一种文件校验方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
S302,接收终端发送的分片上传请求,分片上传请求中携带当前分片、以及与当前分片对应的当前散列值,当前分片为待上传的目标文件中的其中一个分片。
具体地,当用户需要对目标文件进行上传时,可将目标文件拆分成多个分片进行依次上传。服务器可接收终端在每次分片上传过程中发送的分片上传请求。具体的终端如何生成分片上传请求的过程可参考前述实施例中关于步骤S202-S208的详细说明。
S304,确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值。
具体地,服务器可确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值。对于每个分片,终端在上传时还可对应上传相应的分片标识,比如分片序号,这样服务器就可将分片标识与该分片所对应的散列值进行关联存储至全局存储空间中。这样在查找时,可直接基于当前分片的分片标识确定前个分片的分片标识,再通过前个分片的分片标识查找到对应的散列值。
S306,根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证。
在一个实施例中,全局存储空间中存储的前个分片所对应的散列值的格式为十六进制字符串形式。服务器可对前个分片所对应的散列值进行格式转换处理,得到对应的第四数组。服务器可对二进制流形式的当前分片进行转换处理,将其转换成数组形式,得到对应的第五数组。进而服务器可将第四数组与第五数组合并为一个新的第六数组,使用md5(信息摘要算法,是一种密码散列函数)算法计算第六数组的hash值并转换为16进制字符串,得到与当前分片对应的校验散列值。
进而,服务器将该校验散列值,与终端上传的分片上传请求中的当前散列值进行字符串比对(比对时忽略字母大小写),若相同,则校验通过,若不同,则校验不通过(可以视为当前分片在上传过程中分片文件或报文被篡改)。
S308,当验证通过时存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中。
需要强调的是,为进一步保证上述当前分片和当前散列值的私密和安全性,上述当前分片和当前散列值还可以存储于一区块链的节点中。
其中,本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
S310,向终端反馈第一反馈信息;反馈的第一反馈信息用于指示终端继续对待上传的目标文件中的下个分片进行上传。
具体地,当验证通过时服务器可向终端下发第一反馈信息,终端在接收到第一反馈信息后可继续对待上传的目标文件中的下个分片进行上传。当验证未通过时,服务器可向终端下发第二反馈信息,终端在接收到第二反馈信息后可对当前分片进行重新上传。这样,终端不断地对接收到的分片上传请求执行上述步骤S302-步骤S310,直至对目标文件中的各个分片校验完成。
在其中一个实施例中,该文件校验方法还包括分片合并的步骤,该步骤具体包括:接收终端发送的文件合并请求,文件合并请求为终端在将目标文件中的各个分片均成功上传后触发生成;响应于文件合并请求,将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
具体地,当终端完成所有的分片上传后,终端可向服务器发送文件合并请求。响应于文件合并请求,服务器将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
上述文件校验方法,接收终端发送的分片上传请求,根据该分片上传请求从全局存储空间中查找与在当前分片之前的前个分片对应的散列值。进而根据分片上传请求中携带的当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过该校验散列值对分片上传请求中的当前散列值进行验证。当验证通过时,则表明终端上传的当前分片是合法合规的,进而存储该当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中。向终端反馈第一反馈信息,以使得终端根据第一反馈信息继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知终端,避免了终端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种文件上传装置400,包括:获取模块401、确定模块402、发送模块403、接收模块404和遍历模块405,其中:
获取模块401,用于获取待上传的目标文件,并将目标文件拆分成多个分片;
确定模块402,用于依次遍历多个分片中的每个分片,并对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值;
确定模块402,还用于根据历史散列值和当前分片,确定与当前分片对应的当前散列值,并根据当前分片和当前散列值生成分片上传请求;
发送模块403,用于将分片上传请求发送至服务器,发送的分片上传请求用于指示服务器基于当前分片和全局存储空间中存储的与前个分片对应的散列值,对当前散列值进行验证;
接收模块404,用于当验证通过时接收服务器下发的第一反馈信息;
遍历模块405,用于根据第一反馈信息,对当前分片的下一个分片进行遍历,并返回对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将目标文件中的各个分片均成功上传至服务器。
在其中一个实施例中,确定模块402,还用于根据第一反馈信息,继续对多个分片进行遍历,以将当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;将当前分片作为下次分片上传过程中所对应的前个分片,并将当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
在其中一个实施例中,确定模块402,还用于对前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;对当前分片进行转换处理,得到对应的第二数组;拼接第一数组和第二数组,得到第三数组;对第三数组进行哈希运算,得到与当前分片对应的当前散列值。
在其中一个实施例中,发送的分片上传请求还用于指示服务器在当前分片所对应的当前散列值验证通过后,将当前散列值存储至全局存储空间中。
在其中一个实施例中,该文件上传装置还包括重传模块,其中:
接收模块404还用于当验证未通过时接收服务器下发第二反馈信息。
重传模块,用于根据第二反馈信息,重新获取在当前分片之前上传的前个分片所对应的历史散列值,并基于历史散列值对当前分片进行重新上传。
上述文件上传装置,在需要上传目标文件时,将目标文件拆分成多个分片,然后一个个的上传。在上传当前分片时,根据当前分片、以及当前分片的前一个分片所对应的历史散列值,确定与当前分片对应的当前散列值,并将当前散列值和当前分片共同上传至服务器。服务器在接收到当前散列值和当前分片后,会在全局存储空间中查找前次存储的与前个分片对应的散列值,以对当前散列值进行验证。当验证通过时,则表明上传的当前分片是合法合规的,进而终端可继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知客户端,避免了客户端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
关于文件上传装置的具体限定可以参见上文中对于文件上传方法的限定,在此不再赘述。上述文件上传装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图5所示,提供了一种文件校验装置500,包括:接收模块501、查找模块502、校验模块503、存储模块504和反馈模块505,其中:
接收模块501,用于接收终端发送的分片上传请求,分片上传请求中携带当前分片、以及与当前分片对应的当前散列值,当前分片为待上传的目标文件中的其中一个分片;
查找模块502,用于确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值;
校验模块503,用于根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证;
存储模块504,用于当验证通过时存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中;
反馈模块505,用于向终端反馈第一反馈信息;反馈的第一反馈信息用于指示终端继续对待上传的目标文件中的下个分片进行上传。
在其中一个实施例中,该文件校验装置还包括合并模块,其中,接收模块501还用于接收终端发送的文件合并请求,文件合并请求为终端在将目标文件中的各个分片均成功上传后触发生成;合并模块,用于响应于文件合并请求,将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
上述文件校验装置,接收终端发送的分片上传请求,根据该分片上传请求从全局存储空间中查找与在当前分片之前的前个分片对应的散列值。进而根据分片上传请求中携带的当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过该校验散列值对分片上传请求中的当前散列值进行验证。当验证通过时,则表明终端上传的当前分片是合法合规的,进而存储该当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中。向终端反馈第一反馈信息,以使得终端根据第一反馈信息继续采用对应的方式进行下一个分片的上传,直至实现整个目标文件的上传。这样,将文件校验分布在每一次分片上传请求中,若校验不通过则可以及早发现并通知终端,避免了终端将所有的分片都上传之后才被告知校验不通过而需要全部重新上传,这样边上传边校验的方式可以大大提高文件传输效率。同时还可以避免全部上传后进行统一大规模校验所导致的资源消耗飙高以及请求超时等问题。
关于文件校验装置的具体限定可以参见上文中对于文件校验方法的限定,在此不再赘述。上述文件校验装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种文件上传方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储分片数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种文件校验方法。
本领域技术人员可以理解,图6或7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取待上传的目标文件,并将目标文件拆分成多个分片;依次遍历多个分片中的每个分片,并对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值;根据历史散列值和当前分片,确定与当前分片对应的当前散列值,并根据当前分片和当前散列值生成分片上传请求;将分片上传请求发送至服务器,发送的分片上传请求用于指示服务器基于当前分片和全局存储空间中存储的与前个分片对应的散列值,对当前散列值进行验证;当验证通过时接收服务器下发的第一反馈信息;根据第一反馈信息,对当前分片的下一个分片进行遍历,并返回对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将目标文件中的各个分片均成功上传至服务器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据第一反馈信息,继续对多个分片进行遍历,以将当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;将当前分片作为下次分片上传过程中所对应的前个分片,并将当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;对当前分片进行转换处理,得到对应的第二数组;拼接第一数组和第二数组,得到第三数组;对第三数组进行哈希运算,得到与当前分片对应的当前散列值。
在一个实施例中,发送的分片上传请求还用于指示服务器在当前分片所对应的当前散列值验证通过后,将当前散列值存储至全局存储空间中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:当验证未通过时接收服务器下发第二反馈信息;根据第二反馈信息,重新获取在当前分片之前上传的前个分片所对应的历史散列值,并基于历史散列值对当前分片进行重新上传。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收终端发送的分片上传请求,分片上传请求中携带当前分片、以及与当前分片对应的当前散列值,当前分片为待上传的目标文件中的其中一个分片;确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值;根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证;当验证通过时存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中;向终端反馈第一反馈信息;反馈的第一反馈信息用于指示终端继续对待上传的目标文件中的下个分片进行上传。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收终端发送的文件合并请求,文件合并请求为终端在将目标文件中的各个分片均成功上传后触发生成;响应于文件合并请求,将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
在一个实施例中,提供了一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待上传的目标文件,并将目标文件拆分成多个分片;依次遍历多个分片中的每个分片,并对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值;根据历史散列值和当前分片,确定与当前分片对应的当前散列值,并根据当前分片和当前散列值生成分片上传请求;将分片上传请求发送至服务器,发送的分片上传请求用于指示服务器基于当前分片和全局存储空间中存储的与前个分片对应的散列值,对当前散列值进行验证;当验证通过时接收服务器下发的第一反馈信息;根据第一反馈信息,对当前分片的下一个分片进行遍历,并返回对于遍历至的当前分片,确定在当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将目标文件中的各个分片均成功上传至服务器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据第一反馈信息,继续对多个分片进行遍历,以将当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;将当前分片作为下次分片上传过程中所对应的前个分片,并将当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;对当前分片进行转换处理,得到对应的第二数组;拼接第一数组和第二数组,得到第三数组;对第三数组进行哈希运算,得到与当前分片对应的当前散列值。
在一个实施例中,发送的分片上传请求还用于指示服务器在当前分片所对应的当前散列值验证通过后,将当前散列值存储至全局存储空间中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:当验证未通过时接收服务器下发第二反馈信息;根据第二反馈信息,重新获取在当前分片之前上传的前个分片所对应的历史散列值,并基于历史散列值对当前分片进行重新上传。
在一个实施例中,提供了一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收终端发送的分片上传请求,分片上传请求中携带当前分片、以及与当前分片对应的当前散列值,当前分片为待上传的目标文件中的其中一个分片;确定在当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与前个分片对应的散列值;根据当前分片、以及全局存储空间中存储的与前个分片对应的散列值进行哈希运算,得到与当前分片对应的校验散列值,并通过校验散列值对当前散列值进行验证;当验证通过时存储当前分片,并将与当前分片对应的当前散列值存储至全局存储空间中;向终端反馈第一反馈信息;反馈的第一反馈信息用于指示终端继续对待上传的目标文件中的下个分片进行上传。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收终端发送的文件合并请求,文件合并请求为终端在将目标文件中的各个分片均成功上传后触发生成;响应于文件合并请求,将依次接收到的各个分片按照接收的顺序进行合并,得到目标文本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种文件上传方法,其特征在于,所述方法包括:
获取待上传的目标文件,并将所述目标文件拆分成多个分片;
依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
当验证通过时接收所述服务器下发的第一反馈信息,根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,包括:
根据所述第一反馈信息,继续对所述多个分片进行遍历,以将所述当前分片的下一个分片作为下次分片上传过程中按顺序遍历至的当前分片;
将所述当前分片作为下次分片上传过程中所对应的前个分片,并将所述当前分片所对应的当前散列值,作为下次分片上传过程中所对应的前个分片所对应的历史散列值。
3.根据权利要求1所述的方法,其特征在于,所述根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,包括:
对所述前个分片所对应的历史散列值进行转换处理,得到对应的第一数组;
对所述当前分片进行转换处理,得到对应的第二数组;
拼接所述第一数组和所述第二数组,得到第三数组;
对所述第三数组进行哈希运算,得到与所述当前分片对应的当前散列值。
4.根据权利要求1所述的方法,其特征在于,所述发送的所述分片上传请求还用于指示所述服务器在所述当前分片所对应的当前散列值验证通过后,将所述当前散列值存储至所述全局存储空间中,所述全局存储空间包括区块链中的区块。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
当验证未通过时接收所述服务器下发第二反馈信息;
根据所述第二反馈信息,重新获取在所述当前分片之前上传的前个分片所对应的历史散列值,并基于所述历史散列值对所述当前分片进行重新上传。
6.一种文件校验方法,其特征在于,所述方法包括:
接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
7.一种文件上传装置,其特征在于,所述装置包括:
获取模块,用于获取待上传的目标文件,并将所述目标文件拆分成多个分片;
确定模块,用于依次遍历所述多个分片中的每个分片,并对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值;
所述确定模块,还用于根据所述历史散列值和所述当前分片,确定与所述当前分片对应的当前散列值,并根据所述当前分片和所述当前散列值生成分片上传请求;
发送模块,用于将所述分片上传请求发送至服务器,发送的所述分片上传请求用于指示所述服务器基于所述当前分片和全局存储空间中存储的与所述前个分片对应的散列值,对所述当前散列值进行验证;
接收模块,用于当验证通过时接收所述服务器下发的第一反馈信息;
遍历模块,用于根据所述第一反馈信息,对所述当前分片的下一个分片进行遍历,并返回所述对于遍历至的当前分片,确定在所述当前分片之前上传的前个分片所对应的历史散列值的步骤继续执行,直至将所述目标文件中的各个分片均成功上传至所述服务器。
8.一种文件校验装置,其特征在于,所述装置包括:
接收模块,用于接收终端发送的分片上传请求,所述分片上传请求中携带当前分片、以及与所述当前分片对应的当前散列值,所述当前分片为待上传的目标文件中的其中一个分片;
查找模块,用于确定在所述当前分片之前所接收并存储的前个分片,并从全局存储空间中查找与所述前个分片对应的散列值;
校验模块,用于根据所述当前分片、以及所述全局存储空间中存储的与所述前个分片对应的散列值进行哈希运算,得到与所述当前分片对应的校验散列值,并通过所述校验散列值对所述当前散列值进行验证;
存储模块,用于当验证通过时存储所述当前分片,并将与所述当前分片对应的当前散列值存储至所述全局存储空间中;
反馈模块,用于向所述终端反馈第一反馈信息;反馈的所述第一反馈信息用于指示所述终端继续对待上传的目标文件中的下个分片进行上传。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438118.4A CN112532740B (zh) | 2020-12-11 | 2020-12-11 | 文件上传方法和装置、文件校验方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438118.4A CN112532740B (zh) | 2020-12-11 | 2020-12-11 | 文件上传方法和装置、文件校验方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112532740A true CN112532740A (zh) | 2021-03-19 |
CN112532740B CN112532740B (zh) | 2022-11-15 |
Family
ID=74999957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011438118.4A Active CN112532740B (zh) | 2020-12-11 | 2020-12-11 | 文件上传方法和装置、文件校验方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112532740B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938269A (zh) * | 2021-12-15 | 2022-01-14 | 亿次网联(杭州)科技有限公司 | 一种文件分片上传校验方法和系统 |
CN116233120A (zh) * | 2023-05-10 | 2023-06-06 | 深圳普菲特信息科技股份有限公司 | 一种基于数据处理的大文件分片传输方法、系统和介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468843A (zh) * | 2014-12-31 | 2015-03-25 | 浪潮软件股份有限公司 | 一种文件上传方法及装置 |
CN105635324A (zh) * | 2016-03-17 | 2016-06-01 | 新浪网技术(中国)有限公司 | 用于浏览器或服务器的大文件上传、续传方法和装置 |
CN110247986A (zh) * | 2019-06-28 | 2019-09-17 | 北京奇艺世纪科技有限公司 | 一种文件传输方法、装置及电子设备 |
WO2019222934A1 (zh) * | 2018-05-23 | 2019-11-28 | 优视科技新加坡有限公司 | 文件处理方法、装置和系统 |
US20200153889A1 (en) * | 2018-11-12 | 2020-05-14 | Asd Korea | Method for uploading and downloading file, and server for executing the same |
CN111385354A (zh) * | 2020-03-02 | 2020-07-07 | 拉扎斯网络科技(上海)有限公司 | 文件传输方法、装置、电子设备和非易失性存储介质 |
CN111414334A (zh) * | 2020-02-21 | 2020-07-14 | 平安科技(深圳)有限公司 | 基于云技术的文件分片上传方法、装置、设备及存储介质 |
CN111782623A (zh) * | 2020-05-21 | 2020-10-16 | 北京交通大学 | Hdfs存储平台中的文件校验修复方法 |
CN111835871A (zh) * | 2020-08-06 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 传送数据文件的方法和装置、接收数据文件的方法和装置 |
-
2020
- 2020-12-11 CN CN202011438118.4A patent/CN112532740B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468843A (zh) * | 2014-12-31 | 2015-03-25 | 浪潮软件股份有限公司 | 一种文件上传方法及装置 |
CN105635324A (zh) * | 2016-03-17 | 2016-06-01 | 新浪网技术(中国)有限公司 | 用于浏览器或服务器的大文件上传、续传方法和装置 |
WO2019222934A1 (zh) * | 2018-05-23 | 2019-11-28 | 优视科技新加坡有限公司 | 文件处理方法、装置和系统 |
US20200153889A1 (en) * | 2018-11-12 | 2020-05-14 | Asd Korea | Method for uploading and downloading file, and server for executing the same |
CN110247986A (zh) * | 2019-06-28 | 2019-09-17 | 北京奇艺世纪科技有限公司 | 一种文件传输方法、装置及电子设备 |
CN111414334A (zh) * | 2020-02-21 | 2020-07-14 | 平安科技(深圳)有限公司 | 基于云技术的文件分片上传方法、装置、设备及存储介质 |
CN111385354A (zh) * | 2020-03-02 | 2020-07-07 | 拉扎斯网络科技(上海)有限公司 | 文件传输方法、装置、电子设备和非易失性存储介质 |
CN111782623A (zh) * | 2020-05-21 | 2020-10-16 | 北京交通大学 | Hdfs存储平台中的文件校验修复方法 |
CN111835871A (zh) * | 2020-08-06 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 传送数据文件的方法和装置、接收数据文件的方法和装置 |
Non-Patent Citations (1)
Title |
---|
郑利宁等: "自适应文件传输与策略研究", 《计算机工程与应用》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938269A (zh) * | 2021-12-15 | 2022-01-14 | 亿次网联(杭州)科技有限公司 | 一种文件分片上传校验方法和系统 |
CN116233120A (zh) * | 2023-05-10 | 2023-06-06 | 深圳普菲特信息科技股份有限公司 | 一种基于数据处理的大文件分片传输方法、系统和介质 |
CN116233120B (zh) * | 2023-05-10 | 2023-07-14 | 深圳普菲特信息科技股份有限公司 | 一种基于数据处理的大文件分片传输方法、系统和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112532740B (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210209373A1 (en) | Media authentication using distributed ledger | |
WO2019075978A1 (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN112532740B (zh) | 文件上传方法和装置、文件校验方法和装置 | |
CN110781509B (zh) | 数据验证方法、装置、存储介质和计算机设备 | |
CN112015674A (zh) | 基于多层级的缓存资源访问方法、装置和计算机设备 | |
CN111597567B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN112187804B (zh) | 服务器的通信方法、装置、计算机设备和存储介质 | |
CN110768784A (zh) | 密码传输方法、装置、计算机设备和存储介质 | |
CN110727949A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN113888164A (zh) | 区块链交易池实现方法、装置、计算机设备和存储介质 | |
CN110908778A (zh) | 任务部署方法、系统和存储介质 | |
CN111563365A (zh) | 试验标准工单修改信息处理方法、装置和计算机设备 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN113411404A (zh) | 一种文件下载方法、装置、服务器及存储介质 | |
CN110597820B (zh) | 基于区块链的信息处理方法、装置、存储介质和设备 | |
CN112307504A (zh) | 一种安全多方计算方法、装置、电子设备及存储介质 | |
CN114615031A (zh) | 文件存储方法、装置、电子设备及存储介质 | |
CN111064785B (zh) | 资源包下载方法、装置和系统 | |
CN109871698B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113938269B (zh) | 一种文件分片上传校验方法和系统 | |
CN111628985A (zh) | 安全访问控制方法、装置、计算机设备和存储介质 | |
CN116910820A (zh) | 数据报表处理方法、装置、计算机设备以及存储介质 | |
CN113806815B (zh) | 一种文件签署方法和系统 | |
CN111324914B (zh) | 文件的传输方法、装置、服务器、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |