本发明涉及文件传输技术领域,更具体地说,涉及一种大文件传输方法、装置及系统。
背景技术:
文件传输是业务系统常见功能,对于某些比较复杂的业务系统,其上传的文件数据量较大,比如大型招标采购平台的招标文件,这就涉及大文件上传功能。
因此,如何提升大文件的传输性能,是亟需解决的问题。
技术实现要素:
有鉴于此,为解决上述问题,本发明提供一种大文件传输方法、装置及系统,技术方案如下:
一种大文件传输方法,所述方法应用于客户端,所述方法包括:
获取待传输的大文件;
对所述大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在所述大文件中位置的分片标识;
调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,所述服务端能够基于分片标识将所述多个文件分片合并为所述大文件。
优选的,所述方法还包括:
对所述大文件的进行类型校验,并在类型校验通过后,执行所述对所述大文件进行分片得到多个文件分片。
优选的,所述方法还包括:
对每个文件分片进行加密得到相应的文件分片密文,以及,对所述大文件进行摘要计算得到大文件摘要;
相应的,所述通过每个第一线程将所分配的文件分片上传至服务端,包括:
通过每个第一线程将所分配的文件分片对应的文件分片密文上传至服务端,以及,确定所述多个第一线程中用于传输所述大文件摘要的目标第一线程,以通过所述目标第一线程上传文件分片密文的同时将所述大文件摘要上传至服务端,所述服务端能够通过解密文件分片密文得到所述多个文件分片,并通过所述大文件摘要对合并得到的所述大文件进行完整性校验。
优选的,所述通过每个第一线程将所分配的文件分片上传至服务端,包括:
采用断点续传技术,通过每个第一线程将所分配的文件分片上传至服务端。
一种大文件传输装置,所述装置包括:
文件获取模块,用于获取待传输的大文件;
文件分片模块,用于对所述大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在所述大文件中位置的分片标识;
第一线程调用模块,用于调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,所述服务端能够基于分片标识将所述多个文件分片合并为所述大文件。
一种大文件传输方法,所述方法应用于服务端,所述方法包括:
监听客户端的多个用于传输大文件的文件分片的第一线程;
创建与每个第一线程相对应的第二线程;
调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片;
将接收到的多个文件分片存储至指定路径下;
基于文件分片的分片标识将所述指定路径下的多个文件分片合并为所述大文件。
优选的,所述基于文件分片的分片标识将所述指定路径下的多个文件分片合并为大文件之前,方法还包括:
在所述客户端对每个文件分片进行加密、以及对所述大文件进行摘要计算的情况下,对通过每个第二线程所接收到的文件分片密文进行解密得到相应的文件分片,并通过目标第二线程所接收到的大文件摘要对合并得到的所述大文件进行完整性校验,所述目标第二线程是与用于传输所述大文件摘要的目标第一线程相对应的第二线程。
优选的,所述通过每个第二线程接收相应第一线程所上传的文件分片,包括:
通过每个第二线程接收相应第一线程采用断点续传技术所上传的文件分片。
一种大文件传输装置,其特征在于,所述装置包括:
线程监听模块,用于监听客户端的多个用于传输大文件的文件分片的第一线程;
线程创建模块,用于创建与每个第一线程相对应的第二线程;
第二线程调用模块,用于调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片;
文件合并模块,用于将接收到的多个文件分片存储至指定路径下;基于文件分片的分片标识将所述指定路径下的多个文件分片合并为所述大文件。
一种大文件传输系统,其特征在于,所述系统包括:服务端和至少一个客户端。
本发明提供的大文件传输方法、装置及系统,可以对待传输的大文件进行分片,并采用多线程的异步方式同时传输多个文件分片,从而加快大文件的传输性能。并且,由于文件分片具有表征其在大文件中位置的分片标识,因此服务端能够基于该分片标识确定大文件总的文件分片数量、以及所接收到的文件分片间的相对排序,由此能够实现文件分片合并为大文件。基于本发明,可以显著提高大文件的传输性能,保证业务的操作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的大文件传输系统的系统架构图;
图2为本发明实施例提供的大文件传输方法的方法流程图;
图3为本发明实施例提供的大文件的分片示例;
图4为本发明实施例提供的大文件传输装置的结构示意图;
图5为本发明实施例提供的大文件传输方法的另一方法流程图;
图6为本发明实施例提供的大文件传输装置的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例提供一种大文件传输系统,该系统的结构示意图如图1所示,包括服务端10和至少一个客户端20。
在实际应用中,本发明的大文件传输系统可以是应用本发明的任意业务系统,基于本发明,业务系统的大文件传输大大提高了性能,提升了文件传输过程中的安全性和稳定性,满足了业务系统的大文件传输的需求。
本发明不受传统文件传输方式(如ftp、http或cifs)影响,最大化降低大文件、大数据传输时延与丢包率,充分利用网络带宽资源,实现各种业务系统与各类操作系统平台间的数据文件协作,解决大文件传输孤岛问题。
以下分别对客户端20侧和服务端10侧的大文件传输方法进行说明。
本发明实施例提供一种大文件传输方法,该方法应用于客户端20,方法流程图如图2所示,包括如下步骤:
s101,获取待传输的大文件。
本发明实施例中,待传输的大文件可以是用户指定的任意文件,其数据量超过相应业务系统传输的数据量阈值。
s102,对大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在大文件中位置的分片标识。
本发明实施例中,在对大文件进行分片处理时,可以采用定块分片、还可以采用定长分片,当然还可以采用其他用户自定义的分片方式,本发明实施例对此不做限定。
以下分别对定块分片和定长分片进行说明:
定块分片,不管大文件的数据量是多少,其所分割出的总的文件分片数量是指定的,比如,定义大文件总的文件分片数量为10。当然,专业角度来看,这种分割方式还是过于粗糙并且存在很多问题的,因此,还可以根据业务需要优化分片算法,实现动态变更。
定长分片:根据大文件的数据量进行分片,每个文件分片的数据量相同,当然客户端的上传次数也根据大文件的数据量变化。
此外,文件分片目的在于服务端能将客户端上传的文件分片合并为原有的大文件,因此,本发明实施例中,每个文件分片都具有一个唯一的分片标识,该分片标识具有一定的顺序性,能够表征其在大文件中的位置。
例如,采用定块分片,将大文件分割为10个文件分片,参见图3所示的分片示例,大文件的文件头位于文件分片a中,文件分片a的分片标识为1_10,其表示文件分片a属于大文件被分片后的第一个分片,并且大文件总的文件分片的数量为10,相应的,文件分片b的分片标识为2_10、文件分片c的分片标识为3_10……,这样服务端即使没有按照文件分片a、文件分片b、文件分片c……这样的次序接收,也能基于分片标识确定各文件分片间的相对排序,从而在接收到10个文件分片后进行合并操作。
需要说明的是,大文件可以为压缩文件,也可以为非压缩文件。并且,在进行分片时,是将大文件载入二进制数据流中,以生成大文件的二进制文件,再按照定块分割或者定长分割的方式完成分割操作,由此,文件分片也为二进制文件。
另外,为提供文件传输的安全性,本发明实施例中,在对大文件进行分片之前,还可以对大文件进行类型校验。
类型校验包括文件名的后缀校验和文件头的格式校验,这是由于文件名的后缀可以相互转换,在后缀校验通过后,进一步对无法转换的文件头进行格式校验,可以保证校验的全面性。
针对固定业务,文件上传时可以规定固定格式的文件类型,分别对文件名的后缀、以及文件头的格式进行判断,以确定其是否满足所规定的文件类型。
s103,调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,服务端能够基于分片标识将多个文件分片合并为大文件。
本发明实施例中,所调用的第一线程的数量与大文件总的文件分片的数量并不相关。一个第一线程一次上传,只能上传一个文件分片。
比如,第一线程的数量大于等于大文件总的文件分片的数量,这样多个第一线程并行调用一次,即可将所有文件分片同时向服务端上传。再比如,如果第一线程的数量小于大文件总的文件分片的数量,这样多个第一线程并行调用一次,无法将所有文件分片上传至服务端,对于上传结束的第一线程,可以再次分配文件分片,直至所有文件分片上传完毕。
服务端可以基于文件分片的分片标识确定大文件总的文件分片数量、以及所接收到的文件分片间的相对排序,从而按照该相当排序组合接收到的文件分片,一旦确定接收到的文件分片的数量等于大文件总的文件分片数量,则进行对文件分片进行合并,按照文件头中的格式将二进制的文件分片组合为原始的大文件。
综上,大文件的传输性能受限于网络宽带,本发明为解决该问题,将大文件分片、并采用多线程传输能够显著加快大文件的传输速度。采用多线程传输文件分片,将加快文件删除的性能。
现阶段,文件在传输过程中的安全没有进行严格的加密机制,文件在传输过程中的文件流有可能被篡改。在其他一些实施例中,为确保传输数据安全,防止数据泄露、破解、监听等安全问题,在图2所示的大文件传输方法的基础上,还包括如下步骤:
对每个文件分片进行加密得到相应的文件分片密文,以及,对大文件进行摘要计算得到大文件摘要;
相应的,步骤s103中“通过每个第一线程将所分配的文件分片上传至服务端”,可以采用如下步骤:
通过每个第一线程将所分配的文件分片对应的文件分片密文上传至服务端,以及,确定多个第一线程中用于传输大文件摘要的目标第一线程,以通过目标第一线程上传文件分片密文的同时将大文件摘要上传至服务端,服务端能够通过解密文件分片密文得到多个文件分片,并通过大文件摘要对合并得到的大文件进行完整性校验。
本发明实施例中,强化内部数据通信安全性管控,采用国密算法sm4、ms3加密技术对每个文件分片进行处理,并在第一线程上传的过程中使用ssl加密传输,有效确保数据安全。
具体的,可以使用ms4的对称算法加密每个文件分片的内容,得到相应的文件分片密文;再者,可以使用ms3的摘要算法对大文件的内容进行摘要计算,得到大文件的摘要,即大文件摘要。
在传输大文件摘要时,可以指定多个第一线程中的一个线程作为目标第一线程,还可以将每个第一线程均作为目标第一线程,即此时,每个第一线程在传输文件分片密文的同时也传输大文件摘要。对此,本发明实施例并不限定。
服务端则接收各第一线程所传输的文件分片密文、以及目标第一线程所同时传输的大文件摘要。服务端则在接收到文件分片密文后,对文件分片密文进行解密得到相应的文件分片,在基于分片标识将多个文件分片合并为大文件之后,通过所接收到的大文件摘要对大文件进行完整性校验。具体的,可以使用ms3的摘要算法对大文件的内容进行摘要计算得到待对比的大文件摘要,与所接收到的大文件摘要进行对比,如果两者相同,则表示大文件在传输过程中未被篡改,如果两者不同,则表示大文件在传输过程中被篡改。
需要说明的是,上述sm3和sm4属于国密加密解密算法,其研发遵循国家密码管理局技术标准。
大文件的传输时间较长,如果由于网络或其他原因,中间可能传输中断,给业务系统带来不稳定性。在其他一些实施例中,为提供大文件传输的稳定性,本发明实施例中,第一线程将所分配的文件分片上传至服务端时,可以采用断点续传技术进行上传。
大文件传输把大文件从客户端传送到服务端的过程,但是由于网络中的线路、设备以及电脑等种种原因造成的网络断接、死机等突发事件使大文件在传输中出现了重复、形成资源及时间等不必要浪费,为了应对这些突发事件,避免不必要的资源和时间等浪费,本发明采用了断点续传技术。网络故障恢复后,客户端能够继续上传未传输的文件分片,服务端则可以通过分片标识确定是否客户端的文件分片是否上传完毕,若没有则继续接收文件分片。
综上,本发明利用大文件的文件类型校验、分片、多线程、国密算法加密和断点续传多种技术,能够提升大文件的传输性能、安全性能和稳定性能。
基于上述实施例提供的大文件传输方法,本发明实施例则提供执行上述大文件传输方法的装置,该装置的结构示意图如图4所示,包括:
文件获取模块101,用于获取待传输的大文件。
文件分片模块102,用于对大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在大文件中位置的分片标识。
第一线程调用模块103,用于调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,服务端能够基于分片标识将多个文件分片合并为大文件。
可选的,文件分片模块102,还用于:
对大文件的进行类型校验,并在类型校验通过后,执行对大文件进行分片得到多个文件分片。
可选的,文件分片模块102,还用于:
对每个文件分片进行加密得到相应的文件分片密文,以及,对大文件进行摘要计算得到大文件摘要;
相应的,通过每个第一线程将所分配的文件分片上传至服务端的第一线程调用模块103,具体用于:
通过每个第一线程将所分配的文件分片对应的文件分片密文上传至服务端,以及,确定多个第一线程中用于传输大文件摘要的目标第一线程,以通过目标第一线程上传文件分片密文的同时将大文件摘要上传至服务端,服务端能够通过解密文件分片密文得到多个文件分片,并通过大文件摘要对合并得到的大文件进行完整性校验。
可选的,通过每个第一线程将所分配的文件分片上传至服务端的第一线程调用模块103,具体用于:
采用断点续传技术,通过每个第一线程将所分配的文件分片上传至服务端。
本发明实施例中,上述各模块的细化功能可以参见上述方法实施例公开部分,在此不再赘述。
基于上述实施例提供的大文件传输方法,本发明实施例提供另一种大文件传输方法,该方法应用于服务端10,方法流程图如图5所示,包括如下步骤:
s201,监听客户端的多个用于传输大文件的文件分片的第一线程。
本发明实施例中,服务端的服务程序可以监听客户端的数据传输请求,即每个第一线程传输其文件分片时,服务程序都可以监听到。
s202,创建与每个第一线程相对应的第二线程。
本发明实施例中,服务端每监听到一个第一线程传输文件分片时,都可以创建一个新的线程与该第一线程对应,接收第一线程传输的文件分片。
s203,调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片。
s204,将接收到的多个文件分片存储至指定路径下。
本发明实施例中,每接收到一个文件分片,就将该文件分片存储到指定的路径下,直至接收到大文件所有的文件分片。
s205,基于文件分片的分片标识将指定路径下的多个文件分片合并为大文件。
本发明实施例中,基于文件分片的分片标识,服务端能够确定大文件的总的文件分片数量,如果指定路径下文件分片的数量等于大文件总的文件分片数量,则确定大文件传输完毕,此时进行对文件分片进行合并。具体细节可以参见上述大文件传输方法实施例所公开的部分,在此不再赘述。
在其他一些实施例中,为确保传输数据安全,防止数据泄露、破解、监听等安全问题,服务端在基于文件分片的分片标识将指定路径下的多个文件分片合并为大文件之前,还可以执行如下步骤:
在客户端对每个文件分片进行加密、以及对大文件进行摘要计算的情况下,对通过每个第二线程所接收到的文件分片密文进行解密得到相应的文件分片,并通过目标第二线程所接收到的大文件摘要对合并得到的大文件进行完整性校验,目标第二线程是与用于传输大文件摘要的目标第一线程相对应的第二线程。
本发明实施例中,由于第二线程与上传文件分片的第一线程一一对应,因此,对于同时传输文件分片和大文件摘要的第一线程来说,相对应的第二线程,即目标第二线程可以提取大文件摘要,在基于分片将多个文件分片合并为大文件之后,通过大文件摘要对大文件进行完整性校验。具体细节可以参见上述大文件传输方法实施例所公开的部分,在此不再赘述。
在其他一些实施例中,为应对这些突发事件,避免不必要的资源和时间等浪费,服务端可以通过每个第二线程接收相应第一线程采用断点续传技术所上传的文件分片。具体细节可以参见上述大文件传输方法实施例所公开的部分,在此不再赘述。
由此,本发明能够提升大文件的传输性能、安全性能和稳定性能。
基于上述实施例提供的大文件传输方法,本发明实施例则提供执行上述大文件传输方法的装置,该装置的结构示意图如图6所示,包括:
线程监听模块201,用于监听客户端的多个用于传输大文件的文件分片的第一线程。
线程创建模块202,用于创建与每个第一线程相对应的第二线程。
第二线程调用模块203,用于调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片。
文件合并模块204,用于将接收到的多个文件分片存储至指定路径下;基于文件分片的分片标识将指定路径下的多个文件分片合并为大文件。
可选的,文件合并模块204,还用于:
在客户端对每个文件分片进行加密、以及对大文件进行摘要计算的情况下,对通过每个第二线程所接收到的文件分片密文进行解密得到相应的文件分片,并通过目标第二线程所接收到的大文件摘要对合并得到的大文件进行完整性校验,目标第二线程是与用于传输大文件摘要的目标第一线程相对应的第二线程。
可选的,用于通过每个第二线程接收相应第一线程所上传的文件分片的第二线程调用模块203,具体用于:
通过每个第二线程接收相应第一线程采用断点续传技术所上传的文件分片。
本发明实施例中,上述各模块的细化功能可以参见上述方法实施例公开部分,在此不再赘述。
以上对本发明所提供的一种大文件传输方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种大文件传输方法,其特征在于,所述方法应用于客户端,所述方法包括:
获取待传输的大文件;
对所述大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在所述大文件中位置的分片标识;
调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,所述服务端能够基于分片标识将所述多个文件分片合并为所述大文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述大文件的进行类型校验,并在类型校验通过后,执行所述对所述大文件进行分片得到多个文件分片。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对每个文件分片进行加密得到相应的文件分片密文,以及,对所述大文件进行摘要计算得到大文件摘要;
相应的,所述通过每个第一线程将所分配的文件分片上传至服务端,包括:
通过每个第一线程将所分配的文件分片对应的文件分片密文上传至服务端,以及,确定所述多个第一线程中用于传输所述大文件摘要的目标第一线程,以通过所述目标第一线程上传文件分片密文的同时将所述大文件摘要上传至服务端,所述服务端能够通过解密文件分片密文得到所述多个文件分片,并通过所述大文件摘要对合并得到的所述大文件进行完整性校验。
4.根据权利要求1所述的方法,其特征在于,所述通过每个第一线程将所分配的文件分片上传至服务端,包括:
采用断点续传技术,通过每个第一线程将所分配的文件分片上传至服务端。
5.一种大文件传输装置,其特征在于,所述装置包括:
文件获取模块,用于获取待传输的大文件;
文件分片模块,用于对所述大文件进行分片得到多个文件分片,每个文件分片具有能够表征其在所述大文件中位置的分片标识;
第一线程调用模块,用于调用多个第一线程,并为每个第一线程分配待传输的文件分片,以通过每个第一线程将所分配的文件分片上传至服务端,所述服务端能够基于分片标识将所述多个文件分片合并为所述大文件。
6.一种大文件传输方法,其特征在于,所述方法应用于服务端,所述方法包括:
监听客户端的多个用于传输大文件的文件分片的第一线程;
创建与每个第一线程相对应的第二线程;
调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片;
将接收到的多个文件分片存储至指定路径下;
基于文件分片的分片标识将所述指定路径下的多个文件分片合并为所述大文件。
7.根据权利要求6所述的方法,其特征在于,所述基于文件分片的分片标识将所述指定路径下的多个文件分片合并为大文件之前,方法还包括:
在所述客户端对每个文件分片进行加密、以及对所述大文件进行摘要计算的情况下,对通过每个第二线程所接收到的文件分片密文进行解密得到相应的文件分片,并通过目标第二线程所接收到的大文件摘要对合并得到的所述大文件进行完整性校验,所述目标第二线程是与用于传输所述大文件摘要的目标第一线程相对应的第二线程。
8.根据权利要求6所述的方法,其特征在于,所述通过每个第二线程接收相应第一线程所上传的文件分片,包括:
通过每个第二线程接收相应第一线程采用断点续传技术所上传的文件分片。
9.一种大文件传输装置,其特征在于,所述装置包括:
线程监听模块,用于监听客户端的多个用于传输大文件的文件分片的第一线程;
线程创建模块,用于创建与每个第一线程相对应的第二线程;
第二线程调用模块,用于调用每个第二线程,以通过每个第二线程接收相应第一线程所上传的文件分片;
文件合并模块,用于将接收到的多个文件分片存储至指定路径下;基于文件分片的分片标识将所述指定路径下的多个文件分片合并为所述大文件。
10.一种大文件传输系统,其特征在于,所述系统包括:服务端和至少一个客户端。
技术总结