掌桥专利:专业的专利平台
掌桥专利
首页

文件并发分块上传方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 13:46:35


文件并发分块上传方法、装置、电子设备及存储介质

技术领域

本发明涉及数据传输技术领域,尤其涉及一种文件并发分块上传方法、装置、电子设备及存储介质。

背景技术

随着近年来计算机软硬件技术的高速发展,各行各业信息化水平都大大提高,诞生了大量的数据文件,而且每个文件都存储了大量的数据,因此如何将分散在各个终端上的数据高效传输到服务器上成为了一个值得探讨的问题。由于目前对于文件传输的需求量较大,经常会遇到在有限带宽情况下多个客户端并发传输大文件的场景。

现在行业内通用的方法主要是将大文件分块并发传输,然而这一方法在传输带宽较小、传输带宽抖动情况下不能很好的工作,经常会出现有些文件的传输线程抢占了大部分的服务器带宽资源导致其他文件传输速度特别慢甚至网络超时传输失败的场景,并且现有的传输方法在传输过程中一旦因为故障出现传输中断,就需要重新传输整个文件。

发明内容

为解决现有技术中的问题,本发明提供了一种文件并发分块上传方法、装置、电子设备及存储介质。

本发明提供一种文件并发分块上传方法,该方法应用于服务器,包括:上传请求接收流程:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;

待上传文件块信息获取流程:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

上传线程分配流程:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;

上传数据处理流程:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;

第一循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

根据本发明提供的一种文件并发分块上传方法,所述根据所述文件块数据更新历史上传记录,包括:通过循环冗余校验码校验已完全上传的文件块;若校验成功,则记录相应文件块已经完成上传的信息;若校验不成功,则丢弃相应的文件块;和/或,在发生文件块的上传中断时,保存已部分上传的数据信息,并记录已经上传的字节数。

根据本发明提供的一种文件并发分块上传方法,所述计算允许并发的上传线程数,包括:获取系统最大并发数和所述客户端允许的最大并发线程数;使用所述系统最大并发数减去其他客户端正在并发的线程数之和,得到当前可用线程数;计算预设第一比例与所述系统最大并发数的第一乘积,将所述第一乘积与正在上传和下载文件数的比值作为所述客户端的所述允许并发的上传线程数;如果所述允许并发的上传线程数大于所述客户端允许的最大并发线程数,则将所述允许并发的上传线程数调整为所述客户端允许的最大并发线程数;如果所述允许并发的上传线程数大于当前可用线程数,则将所述允许并发的上传线程数调整为所述当前可用线程数;如果所述允许并发的上传线程数小于1,则将所述允许并发的上传线程数调整为1。

根据本发明提供的一种文件并发分块上传方法,所述方法还包括计算预设第二比例与用于文件传输的内存的第二乘积,将所述第二乘积与所述系统最大并发数的比值作为分块大小;根据所述分块大小对所述待上传文件进行分块。

本发明还提供一种文件并发分块上传方法,该方法应用于客户端,包括:上传请求发送流程:读取待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块及上传线程信息接收流程:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;数据上传流程:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;第二循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

本发明还提供一种文件并发分块上传装置,所述装置应用于服务器,所述装置包括:

上传请求接收模块,用于:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;

待上传文件块信息获取模块,用于:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

上传线程分配模块,用于:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;

上传数据处理模块,用于:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;

第一循环执行模块,用于:重复执行上述过程,直至所述待上传文件块全部上传。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述文件并发分块上传方法的步骤。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述文件并发分块上传方法的步骤。

本发明提供的文件并发分块上传方法、装置、电子设备及存储介质,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并且避免了资源冲突;与此同时,通过基于未完全传输的文件块的已有长度进行上传,实现了对文件的断点续传。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的文件并发分块上传方法的流程示意图之一;

图2是本发明提供的文件并发分块上传方法的流程示意图之二;

图3是本发明提供的应用于服务器的文件并发分块上传方法的流程示意图;

图4是本发明提供的应用于客户端的文件并发分块上传方法的流程示意图;

图5是本发明提供的文件并发分块上传装置的结构示意图;

图6是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明提供的文件并发分块上传方法的流程示意图之一,如图1所示,所述方法应用于服务器,包括:

S110,上传请求接收流程:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;

S120,待上传文件块信息获取流程:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

S130,上传线程分配流程:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;

S140,上传数据处理流程:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;

S150,第一循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

元信息表示用来描述一个文件的特征的系统数据,例如访问权限、文件大小、文件拥有者、文件数据的分布信息等,当操作一个文件时必须要得到它的元信息,才能定位到文件的位置并且得到文件的内容或相关属性。

客户端从本地文件系统中,读取所要上传的文件,获取文件的元信息,具体可以包括文件的名称(下文称文件名),用户给文件设定的标识符(下文称文件标识符),文件的大小,通过HTTP协议发送到服务器。

服务器接收到HTTP请求后,从中读取文件名、文件标识符以及文件大小。服务器使用文件标识符,从历史传输记录文件中,查询该文件是否上传过,如果历史传输记录中不含有该文件,则视为该文件为首次传输,随后读取用户在配置文件中设置的文件分块大小,接着使用文件大小除以文件分块大小,计算出一共需要传输的文件块数以及每一个文件块的起止偏移量,并将这些信息写入到历史传输记录中;如果历史传输记录文件中含有该文件,则直接从历史传输记录文件中,读取文件分块大小、每个文件块起始偏移量、各个文件块已经传输的长度以及每个文件块是否完成传输。

其中,文件块偏移量指的是将待上传文件从指定位置向前或向后移动的字节数,利用文件块偏移量来描述已完成传输的文件块位于待上传文件的具体位置,即用来描述待上传文件的分块方式;同时,利用已传输字节数来描述某一未完成传输的文件块的传输进度。

服务器根据当前的服务器负载计算允许并发的上传线程数N,同时将计算结果以及待上传文件块信息发送给客户端;客户端以接收到的允许并发的上传线程数N为依据开启相应个数的上传线程,并依赖于开启的多个线程进行对文件块的并行上传过程;服务器接收客户端发来的多个文件块数据,并以实际的文件块接收情况为依据实时更新历史上传记录。

以历史上传记录作为判断依据,当待上传文件没有完成上传时,重复执行以上文件上传过程;当待上传文件完成上传时,停止文件上传过程。

本发明提供的文件并发分块上传方法,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突;通过基于未完全传输的文件块的已有长度进行上传,实现了对文件的断点续传;与此同时,通过实时更新文件块的历史上传记录,确保文件并发分块上传过程的可靠性,避免出现错传、漏传问题。

根据本发明提供的一种文件并发分块上传方法,在本发明中,所述根据所述文件块数据更新历史上传记录,包括:通过循环冗余校验码校验已完全上传的文件块;若校验成功,则记录相应文件块已经完成上传的信息;若校验不成功,则丢弃相应的文件块;和/或,在发生文件块的上传中断时,保存已部分上传的数据信息,并记录已经上传的字节数。

使用服务器指定的数据压缩方式,对数据进行压缩,并计算出数据的MD5校验码,随后使用HTTP协议中的POST请求,将MD5校验码、数据的长度作为请求头,文件块还未传输的部分作为请求体,传输到服务器上。

服务器接收到文件块传输请求后,从中读取MD5校验码、数据长度以及文件块还未传输的部分。若长度达到约定的文件块的长度,则计算数据的MD5校验码,如果与用户传输的MD5校验码一致,则视为本次传输无误,更新历史传输记录中指定文件的对应文件块已经传输的长度,并将对应文件块标识为已经完成传输,否则视为数据传输有误,丢弃本次传输结果,并删除指定文件块已经上传的部分,更新历史传输记录中指定文件的对应文件块已经传输的长度为0。服务器在处理完请求后,将当前服务器所有客户端正在并发传输的线程数减一。

服务器读取指定文件块已经上传的部分,与本次传输的数据进行拼合,如果总的长度没有达到约定的文件块的长度,则该文件块还没有传输完,直接存储该文件块,更新历史传输记录中指定文件的对应文件块已经传输的长度,并以此作为依据更新历史上传记录,以便于系统恢复正常后可以从上传中断位置继续进行文件上传。

本发明提供的文件并发分块上传方法,通过循环冗余校验码判断完成上传的文件块的准确性,并在该判断完成后再更新历史上传记录,基于此确保文件上传的可靠性;同时,在发生文件块上传中断的情形时,保存已部分上传的数据信息,并以此更新历史上传记录,确保在系统恢复正常后可以从上传中断位置继续进行文件上传,确保了文件上传的有效性。

根据本发明提供的一种文件并发分块上传方法,在本发明中,所述计算允许并发的上传线程数,包括:获取系统最大并发数和所述客户端允许的最大并发线程数;使用所述系统最大并发数减去其他客户端正在并发的线程数之和,得到当前可用线程数;计算预设第一比例与所述系统最大并发数的第一乘积,将所述第一乘积与正在上传和下载文件数的比值作为所述客户端的所述允许并发的上传线程数;如果所述允许并发的上传线程数大于所述客户端允许的最大并发线程数,则将所述允许并发的上传线程数调整为所述客户端允许的最大并发线程数;如果所述允许并发的上传线程数大于当前可用线程数,则将所述允许并发的上传线程数调整为所述当前可用线程数;如果所述允许并发的上传线程数小于1,则将所述允许并发的上传线程数调整为1。

服务器读取用户提供的配置文件,获取系统最大并发数和客户端允许的最大并发线程数;使用系统最大并发数减去其他客户端正在并发的线程数之和,得到当前可用线程数;需要说明的是,正在并发的线程数之和同时包括正在上传的线程和正在下载的线程;服务器使用预设的第一比例与系统最大并发数相乘,得到第一乘积,此处第一比例为预设值,可以根据需要进行预先设定,利用第一乘积与当前客户端正在上传和下载的文件数的比值作为当前客户端的允许并发的上传线程数,第一乘积比如可以取值为0.9。

通过上述计算得到的当前客户端允许并发的上传线程数只是一个理论值,在经过计算得到允许并发的上传线程数之后,还需要经历一个判断步骤,基于判断结果得到最终的允许并发的上传线程数,具体判断过程如下:

①如果经过计算得到的允许并发的上传线程数大于客户端允许的最大并发线程数,说明当前待上传文件对于上传线程的需求已经超出了当前客户端的最大能力,此时将允许并发的上传线程数调整为客户端允许的最大并发线程数;②如果经过计算得到的允许并发的上传线程数大于当前可用线程数,说明当前待上传文件对于上传线程的需求已经超过了当前系统的最大能力,此时将允许并发的上传线程数调整为当前可用线程数;③如果经过计算得到的允许并发的上传线程数小于1,说明当前待上传文件对于上传线程的需求较小,但是为了确保上传过程的正常进行,将允许并发的上传线程调整为1。

本发明提供的文件并发分块上传方法,通过利用系统最大并发线程数减去其他客户端当前占用的线程数,锁定当前可用线程数的范围,同时通过预设第一比例这个系数对实际使用的线程数根据实际需求进行灵活的调整,实现对上传线程的均衡利用;与此同时,将经过计算得到的允许并发的上传线程数分别与客户端允许的最大并发线程数、当前可用线程数等进行判断,并基于判断结果得到最终的允许并发的上传线程数,基于该判断步骤可以使经过计算得到的允许并发的上传线程数更好的与服务器或者客户端当前的实际上传能力进行匹配,确保在服务器和客户端发挥最大上传能力的前提下实现对待上传文件的高效传输。

根据本发明提供的一种文件并发分块上传方法,在本发明中,所述方法还包括:计算预设第二比例与用于文件传输的内存的第二乘积,将所述第二乘积与所述系统最大并发数的比值作为分块大小;根据所述分块大小对所述待上传文件进行分块。

需要说明的是,服务器的内存是一个定值,当系统运行时,服务器的内存分为两部分:占用内存与剩余内存,占用内存过大,会导致系统运行速度低下,剩余内存过大,则说明服务器利用率偏低。在本发明中,用于文件传输的内存可以是剩余内存或可以是一个设定值,将预设第二比例与用于文件传输的内存相乘,得到第二乘积,同时利用该第二乘积与系统最大并发数的比值作为文件块具体的分块标准,对待上传文件进行分块处理,而对于预设第二比例的值可以根据实际需要进行预先设定,并非一个固定不变的值。预设第二比例可以取值为0.9。

本发明提供的文件并发分块上传方法,通过利用预设第二比例对最终文件上传的内存进行调控,实现了对于服务器运行速度和服务器利用率两方面的均衡处理,确保在满足文件上传速度的前提下,最大程度上发挥了服务器的运行能力;同时预设第二比例的可调整性,实现了对于服务器运行能力的灵活调整,可以满足文件块上传速度优先或文件块上传数量优先的差异性需求。

图2是本发明提供的文件并发分块上传方法的流程示意图之二,如图2所示,所述方法应用于客户端,包括:

S210,上传请求发送流程:读取待上传文件的元信息;其中,所述元信息包括文件标识;

S220,待上传文件块及上传线程信息接收流程:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

S230,数据上传流程:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;

S240,第二循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

需要说明的是,客户端读取待上传文件的元信息,并将该元信息发送给服务器,服务器以元信息中的文件标识作为获取依据,得到待上传文件的待上传文件块信息,待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数,利用文件块偏移量来描述待上传文件的分块方式;同时,利用已传输字节数来描述某一未完成传输的文件块的传输进度。

与此同时,服务器基于服务器的负载计算允许并发的上传线程数,并将得到的待上传文件块信息和允许并发的上传线程数发送给客户端,客户端以允许并发的上传线程数作为依据开启相应个数的上传线程,同时将待上传文件块信息作为文件上传的依据,以上传线程作为传输路径向服务器发送文件块数据。

以历史上传记录作为判断依据,当待上传文件没有完成上传时,重复执行以上文件上传过程;当待上传文件完成上传时,停止文件上传过程。

本发明提供的文件并发分块上传方法,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突;通过基于未完全传输的文件块的已有长度进行上传,实现了对文件的断点续传;与此同时,通过实时更新文件块的历史上传记录,确保文件并发分块上传过程的可靠性,避免出现错传、漏传问题。

图3是本发明提供的应用于服务器的文件并发分块上传方法的流程示意图,如图3所示,所述方法包括:

Step1,流程开始,查找对应文件历史传输记录,服务器基于文件标识查找对应文件的历史传输记录;

Step2,计算传输计划和并发线程数,传输计划包括文件块的压缩方式以及循环冗余校验码的计算,并发线程数即表示允许并发的上传线程数;

Step3,接收文件块数据,并对当前文件块是否传输完毕进行判断;

Step4,若当前文件块没有传输完毕,则更新当前文件块已经传输的字节数;若当前文件块已经传输完毕,则验证校验码,然后基于验证结果更新文件块数据和元信息。

Step5,流程结束。

本发明提供的文件并发分块上传方法,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突。

图4是本发明提供的应用于客户端的文件并发分块上传方法的流程示意图,如图4所示,所述方法包括:

Step1,流程开始,传输文件元信息到服务器,文件元信息包括文件标识,用于区分不同文件;

Step2,获取传输计划和并发线程数,传输计划包括文件块的压缩方式以及循环冗余校验码的计算,并发线程数即表示允许并发的上传线程数;

Step3,开启多个传输线程,并且为每个线程分配一个文件块上传任务,每个上传任务包括压缩文件块,计算校验码,并对压缩后的文件块和得到的校验码进行上传;

Step4,判断所有文件是否均已完成传输,如果没有完成,则重新执行Step2与Step3;如果已经完成,则流程结束。

本发明提供的文件并发分块上传方法,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突。

图5是本发明提供的文件并发分块上传装置的结构示意图,该装置应用于服务器,如图5所示,所述装置包括:上传请求接收模块510、待上传文件块信息获取模块520、上传线程分配模块530、上传数据处理模块540以及第一循环执行模块550,其中:

上传请求接收模块510,用于:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;

待上传文件块信息获取模块520,用于:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

上传线程分配模块530,用于:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;

上传数据处理模块540,用于:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;

第一循环执行模块550,用于:重复执行上述过程,直至所述待上传文件块全部上传。

本发明提供的文件并发分块上传装置,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突;通过基于未完全传输的文件块的已有长度进行上传,实现了对文件的断点续传;与此同时,通过实时更新文件块的历史上传记录,确保文件并发分块上传过程的可靠性,避免出现错传、漏传问题。

根据本发明提供的一种文件并发分块上传装置,上传数据处理模块540在用于根据所述文件块数据更新历史上传记录时,具体用于:通过循环冗余校验码校验已完全上传的文件块;若校验成功,则记录相应文件块已经完成上传的信息;若校验不成功,则丢弃相应的文件块;和/或,在发生文件块的上传中断时,保存已部分上传的数据信息,并记录已经上传的字节数。

本发明提供的文件并发分块上传装置,通过循环冗余校验码判断完成上传的文件块的准确性,并在该判断完成后再更新历史上传记录,基于此确保文件上传的可靠性;同时,在发生文件块上传中断的情形时,保存已部分上传的数据信息,并以此更新历史上传记录,确保在系统恢复正常后可以从上传中断位置继续进行文件上传,使该上传过程具有了断点续传功能,确保了文件上传的有效性。

根据本发明提供的一种文件并发分块上传装置,上传线程分配模块530在用于计算允许并发的上传线程数时,具体用于:获取系统最大并发数和所述客户端允许的最大并发线程数;使用所述系统最大并发数减去其他客户端正在并发的线程数之和,得到当前可用线程数;计算预设第一比例与所述系统最大并发数的第一乘积,将所述第一乘积与正在上传和下载文件数的比值作为所述客户端的所述允许并发的上传线程数;如果所述允许并发的上传线程数大于所述客户端允许的最大并发线程数,则将所述允许并发的上传线程数调整为所述客户端允许的最大并发线程数;如果所述允许并发的上传线程数大于当前可用线程数,则将所述允许并发的上传线程数调整为所述当前可用线程数;如果所述允许并发的上传线程数小于1,则将所述允许并发的上传线程数调整为1。

本发明提供的文件并发分块上传装置,通过利用系统最大并发线程数减去其他客户端当前占用的线程数,锁定当前可用线程数的范围,同时通过预设第一比例这个系数对实际使用的线程数根据实际需求进行灵活的调整,实现对上传线程的均衡利用;与此同时,将经过计算得到的允许并发的上传线程数分别与客户端允许的最大并发线程数、当前可用线程数等进行判断,并基于判断结果得到最终的允许并发的上传线程数,基于该判断步骤可以使经过计算得到的允许并发的上传线程数更好的与服务器或者客户端当前的实际上传能力进行匹配,确保在服务器和客户端发挥最大上传能力的前提下实现对待上传文件的高效传输。

根据本发明提供的一种文件并发分块上传装置,所述装置500还用于计算预设第二比例与用于文件传输的内存的第二乘积,将所述第二乘积与所述系统最大并发数的比值作为分块大小;根据所述分块大小对所述待上传文件进行分块。

本发明提供的文件并发分块上传装置,通过利用预设第二比例对最终文件上传的利用内存进行调控,实现了对于服务器运行速度和服务器利用率两方面的均衡处理,确保在满足文件上传速度的前提下,最大程度上发挥了服务器的运行能力;同时预设第二比例的可调整性,实现了对于服务器运行能力的灵活调整,分别满足文件块上传速度优先或文件块上传数量优先的差异性需求。

本发明还提供一种文件并发分块上传装置,该装置应用于客户端,所述装置包括:上传请求发送模块、待上传文件块及上传线程信息接收模块、数据上传模块以及第二循环执行模块,其中:

上传请求发送模块,用于:读取待上传文件的元信息;其中,所述元信息包括文件标识;

待上传文件块及上传线程信息接收模块,用于:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;

数据上传模块,用于:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;

第二循环执行模块,用于:重复执行上述过程,直至所述待上传文件块全部上传。

本发明提供的文件并发分块上传装置,通过服务器计算允许并发的上传线程数,同时对待上传文件进行分块处理,确认进行并发上传的具体对象,客户端最终基于允许并发的上传线程数开启多个上传线程,实现对待上传文件多个文件块的并发上传过程,基于此实现了对于文件的快速高效上传过程,提高了文件的整体上传效率,并避免了资源冲突;通过基于未完全传输的文件块的已有长度进行上传,实现了对文件的断点续传;与此同时,通过实时更新文件块的历史上传记录,确保文件并发分块上传过程的可靠性,避免出现错传、漏传问题。

图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行文件并发分块上传方法,所述文件并发分块上传方法包括:上传请求接收流程:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块信息获取流程:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;上传线程分配流程:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;上传数据处理流程:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;第一循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

或所述文件并发分块上传方法包括:上传请求发送流程:读取待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块及上传线程信息接收流程:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;数据上传流程:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;第二循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的文件并发分块上传方法,所述文件并发分块上传方法包括:上传请求接收流程:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块信息获取流程:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;上传线程分配流程:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;上传数据处理流程:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;第一循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

或所述文件并发分块上传方法包括:上传请求发送流程:读取待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块及上传线程信息接收流程:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;数据上传流程:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;第二循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的文件并发分块上传方法,所述文件并发分块上传方法包括:上传请求接收流程:接收客户端发送的待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块信息获取流程:根据所述文件标识获取所述待上传文件的待上传文件块信息;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;上传线程分配流程:计算允许并发的上传线程数,并将所述待上传文件块信息及所述允许并发的上传线程数发送给所述客户端;上传数据处理流程:接收所述客户端的上传线程根据所述待上传文件块信息发送的文件块数据,根据所述文件块数据更新历史上传记录;第一循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

或所述文件并发分块上传方法包括:上传请求发送流程:读取待上传文件的元信息;其中,所述元信息包括文件标识;待上传文件块及上传线程信息接收流程:接收服务器发送的待上传文件块信息以及允许并发的上传线程数;其中,所述待上传文件块信息包括待上传文件块的起始偏移量以及未完全传输的文件块的已传输字节数;数据上传流程:根据所述允许并发的上传线程数开启上传线程,并根据所述待上传文件块信息向所述服务器发送文件块数据;第二循环执行流程:重复执行上述过程,直至所述待上传文件块全部上传。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术分类

06120113804679