数据传输方法、装置、服务器、设备、介质及程序产品与流程

文档序号:32788558发布日期:2023-01-03 20:14阅读:22来源:国知局
数据传输方法、装置、服务器、设备、介质及程序产品与流程

1.本技术涉及互联网技术领域,尤其涉及一种数据传输方法、装置、服务器、设备、介质及程序产品。


背景技术:

2.超文本传输协议(hyper text transfer protocol,简称http)是一个请求-响应协议,常用于浏览器与服务器之间的交互。用户在使用浏览器时,通常可以利用http技术来从服务器下载文件或者上传文件至服务器。
3.相关技术中,为了解决用户利用http协议进行数据传输的大文件一次性上传难以保障文件完整性问题,浏览器前端代码可以将收到文件进行切片,分成很多大小一致的小文件上传到服务器。
4.但由于目前的htttp协议传输机制,文件在浏览器/服务器的传输过程中,服务器将创建大量的临时文件,发生较多的冗余磁盘,严重影响整体过程性能。


技术实现要素:

5.为解决上述问题,即解决分片文件传输过程中,服务器创建大量临时文件,严重影响系统性能的问题,本技术提供一种数据传输方法、装置、服务器、设备、介质及程序产品。
6.为了实现上述目的,本技术提供如下技术方案:
7.根据本技术的一方面,提供一种数据传输方法,包括:
8.响应于分片文件传输请求,读取目标传输文件的分片文件,所述分片文件传输请求为http put请求;
9.响应于分片文件传输完成请求,获取各个分片文件的第一信息摘要总值,所述分片文件传输完成请求为http post请求;
10.在所述第一信息摘要总值与所述目标传输文件的第二信息摘要总值匹配时,将各个分片文件组合得到所述目标传输文件。
11.在一种实施方式中,在读取目标传输文件的分片文件之前,还包括:
12.响应于文件传输请求,获取目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为http post请求;
13.向请求端发送第一指示信息,所述第一指示信息携带所述任务标识,用于指示所述请求端生成所述任务标识对应的目标传输文件的分片文件,并发起分片文件传输请求。
14.在一种实施方式中,在获取各个分片文件的第一信息摘要总值之前,还包括:
15.每读取一个分片文件,获取所述分片文件的信息摘要值;
16.校验所述分片文件的信息摘要值是否与其对应的预设值相匹配,若各个分片文件均与各自对应的预设值相匹配,则执行获取各个分片文件的第一信息摘要总值的步骤。
17.在一种实施方式中,若分片文件的信息摘要值与其对应的预设值不匹配,还包括:
18.向请求端发送第二指示信息,所述第二指示信息用于指示所述请求端重新发送对
应分片文件的分片文件传输请求,所述重新发送的分片传输请求中携带所述分片文件对应的分片更新文件。
19.在一种实施方式中,在每读取一个分片文件之后,还包括:
20.针对每一个分片文件,创建对应的分片文件存储空间;
21.将每一个分片文件写入至其对应的分片文件存储空间中,若接收到分片文件对应的分片更新文件,则将所述分片更新文件写入至对应分片文件存储空间中,并覆盖所述分片文件存储空间中的当前分片文件。
22.在一种实施方式中,所述方法还包括:
23.生成第三指示信息,并向请求端发送所述第三指示信息;其中,所述第三指示信息用于指示所述目标传输文件传输成功或者传输失败。
24.在一种实施方式中,在获取目标传输文件的基本信息之后,还包括:将所述目标传输文件的基本信息存储至目标数据库中。
25.根据本技术的第二方面,提供一种数据传输方法,包括:
26.向服务器发送分片文件传输请求,所述分片文件传输请求携带目标传输文件的分片文件,所述分片文件传输请求为http put请求;
27.若各个分片传输完成,则向所述服务器发送分片传输完成请求,所述各个分片文件传输完成请求为http post请求。
28.在一种实施方式中,在向服务器发送分片文件传输请求之前,还包括:
29.向服务器发送文件传输请求,所述文件传输请求携带目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为http post请求;
30.接收所述服务器传输的第一指示信息,生成所述目标传输文件的分片文件,其中所述第一指示信息携带所述目标传输文件的任务标识。
31.在一种实施方式中,所述方法还包括:
32.接收所述服务器传输的第二指示信息,所述第二指示信息用于指示重新发送对应分片文件的分片文件传输请求;
33.向所述服务器重新发送所述分片文件的分片文件传输请求,所述重新发送的分片文件传输请求携带所述分片文件对应的分片更新文件。
34.在一种实施方式中,所述方法还包括:
35.若在预设时间段内没有接收到服务器发送的第三指示信息,则中止所述目标传输文件的分片文件传输进程,并生成第四指示信息;
36.所述第三指示信息用于指示所述目标传输文件传输成功或者失败,所述第四指示信息用于指示所述目标传输文件传输超时。
37.根据本技术的第三方面,提供一种数据传输装置,包括:
38.读取模块,其设置为响应于分片文件传输请求,读取目标传输文件的分片文件,所述分片文件传输请求为http put请求;
39.所述信息获取模块,还设置为响应于分片文件传输完成请求,获取各个分片文件的第一信息摘要总值,所述各个分片文件传输完成请求为http post请求;
40.文件获取模块,其设置为在所述第一信息摘要总值与所述目标传输文件的第二信
息摘要总值匹配时,将各个分片文件组合得到所述目标传输文件。
41.根据本技术的第四方面,提供一种数据传输装置,包括:
42.第一请求模块,其设置为向服务器发送分片文件传输请求,所述分片文件传输请求携带目标传输文件的分片文件,所述分片文件传输请求为http put请求;
43.第二请求模块,其设置为若各个分片传输完成,则向所述服务器发送分片传输完成请求,所述各个分片文件传输完成请求为http post请求。
44.根据本技术的第五方面,提供一种服务器,包括:存储器和处理器;
45.所述存储器存储计算机执行指令;
46.所述处理器执行所述存储器存储的计算机执行指令,使得所述服务器执行所述的数据传输方法。
47.根据本技术的第六方面,提供一种终端设备,包括:存储器和处理器;
48.所述存储器存储计算机执行指令;
49.所述处理器执行所述存储器存储的计算机执行指令,使得所述终端设备执行所述的数据传输方法。
50.根据本技术的第七方面,提供一种可读存储介质,所述可读存储介质中存储有计算机指令,所述计算机执行指令被处理器执行时用于实现所述的数据传输方法。
51.根据本技术的第八方面,提供一种程序产品,包括计算机指令,该计算机指令被处理器执行时实现所述的数据传输方法。
52.可以理解的,本技术实施例提供的数据传输方法、装置、服务器、设备、介质及程序产品,通过响应于分片文件传输请求,读取目标传输文件的分片文件,所述分片文件传输请求为http put请求,然后响应于分片文件传输完成请求,获取各个分片文件的第一信息摘要总值,所述分片文件传输完成请求为http post请求,然后在所述第一信息摘要总值与所述目标传输文件的第二信息摘要总值匹配时,将各个分片文件组合得到所述目标传输文件。通过上述方法,本技术可以有效保证数据传输的完整性,同时有效解决了分片文件传输过程中,产生大量临时文件严重影响系统性能的问题,提高了服务器运行速率。
附图说明
53.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
54.图1为本技术实施例提供的一种可能的场景示意图之一;
55.图2为本技术实施例提供的一种数据传输方法的流程示意图;
56.图3为本技术实施例提供的另一种数据传输方法的流程示意图;
57.图4为本技术实施例提供的又一种数据传输方法的流程示意图;
58.图5为本技术实施例提供的再一种数据传输方法的流程示意图;
59.图6为本技术实施例提供的一种数据传输装置的结构示意图;
60.图7为本技术实施例提供的另一种数据传输装置的结构示意图;
61.图8为本技术实施例提供的一种服务器的结构示意图;
62.图9为本技术实施例提供的一种终端设备的结构示意图。
63.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图
和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
64.图1为本技术实施例提供的一种可能的场景示意图,如图1所示,包括终端设备10,以及与终端设备10电连接的服务器20,本实施例中,以终端设备10中的浏览器作为请求端或者客户端为例,终端设备10通过网络与服务器20进行数据交互。用户在浏览器上可以通过超文本协议(hyper text transferprotocol,http)技术上传大文件到服务器20。大文件具体可以是指占用存储空间较大的文件,例如生活中常见的视频文件、应用软件安装文件等。
65.其中,客户端110可以包括但不限于,电脑、智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(moving picture experts group audio layer iii,简称mp3)播放器、动态影像专家压缩标准音频层面4(moving picture experts group audio layer iv,简称mp4)播放器、便携计算机、车载电脑、可穿戴设备、台式计算机、机顶盒、智能电视等等。
66.服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
67.在实际生活应用中,用户使用http技术从浏览器上传大文件至服务器20时,经常会面对文件上传速度慢,被网关限制文件大小,上传过程中断后无法继续上传,以及由于http传输丢失数据包造成的文件不完整等一系列问题。现有技术为了解决大文件不能够一次性上传问题,其采用的一种方式是将文件进行切分,分成很多大小一致的小文件,然后依次上传到服务器。但是这种方式由于文件上传过程中缺少校验,很难保证文件传输的完整性。另外一种方式则是服务器在浏览器上传完文件之后,对接收到的文件进行直接校验,从而保证文件传输的完整性。而这种方式还是不能够克服网络不稳定造成的中断或丢包的问题,一旦在文件的传输过程中出现中断或丢包,就无法恢复,导致用户需要重头开始重新上传,文件上传效率很慢。
68.相关技术中,提出了分片文件以及对分片文件进行校验的方式,即在服务器端针对每一个分片文件进行校验,以获得大文件,保证数据传输的完整性,同时解决文件中断或者丢包率等现象,然而当前的浏览器/服务器通常采用的是http post,content-type:multipart/formdata进行文件传输,这种方式为在服务器端解码过程,会在服务器端创建大量的临时文件,发生较多的冗余磁盘io(input/output,输入/输出),严重影响整体过程性能。
69.可以理解的,http post请求包含两部分:请求头(header)和请求体(body)。post常见的请求体(body)有三种传输内容类型content-type,其中的一种content-type为multipart/form-data,在进行分片文件传输时一般用到的就是这种传输内容类型。
70.有鉴于此,本实施例中提供的数据传输方法、装置、服务器、设备、介质及程序产品,在进行分片文件传输时,采用http put请求的形式进行传输,切片文件不再经由服务端
临时文件转储,而由服务器端直接读取,此过程服务器端无需创建临时文件,大幅降低了服务端磁盘io负载,尤其在虚拟机场景下,可以大幅降低由此产生的网络磁盘相关的网络负载,提高服务器运行速率。
71.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术的实施例中的附图,对本技术实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的部件或具有相同或类似功能的部件。所描述的实施例是本技术一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
72.下面以应用于图1中的服务器20为例,来详细说明本技术实施例提供的数据传输方法。
73.请参照图2,图2为本技术实施例提供的一种数据传输方法的流程示意图,该方法包括步骤s201-s203。
74.步骤s201、响应于分片文件传输请求,读取目标传输文件的分片文件,所述分片文件传输请求为http put请求。
75.本实施例中,目标传输文件的分片文件至少包括两个分片文件。http put请求,被定义为idempotent幂等的方法,对于相同请求,后一请求会覆盖前一请求,相较于http post请求,后一个请求不会把第一个请求覆盖掉,对于同一请求,将可能产生多个文件。
76.进一步地,本实施例中分片文件传输请求采用的报文类型为content-type:application/oct-stream,即任意类型的二进制流数据类型,在一些实施例中,分片文件传输请求也可以采用除了http put之外的其它请求方式,例如http patch请求方式,同样采用报文类型为content-type:application/oct-stream的方式进行传输,实现数据流的直接读取。
77.相关技术中,采用http post请求传输分片文件的multipart/form-data的报文类型,服务器端读取逻辑通常为读取http协议的报文体的流,根据form-data协议解析每个“part”,并在接收服务器端的本地指定临时存储空间,为每一个part生成一个临时文件。当系统调用servletrequest对象的getpart接口时,其实际返回的是本地磁盘文件的fileinputstream对象,可以理解的,调用getpart接口读取的实际上是底层的临时文件,这将导致本地磁盘io的增加。
78.而在本实施例中,利用http put请求的分片文件传输形式,无需生成临时文件,具体地,http put请求采用content-type:application/oct-stream的报文类型进行传输,对于这种报文类型,系统默认是不进行本地缓存的,而是读取网络传输流,不再需要调用request的getpart(),而是直接getinputstream()。
79.示例性地,对于http put请求中的分片文件数据,采用url参数进行传递,服务器的参数解析由相关技术中的tomcat自带的multipart/form-data类型参数解析改为request.getparameter(""),传输文件分片的二进制内容,不再经由服务端临时文件转储,而是采用内存缓存方式直接读取。本实施例中,改进了文件随机写入磁盘的方式,采用java.io.randomaccessfile.write(byte[]b)方法,利用底层的native块读写机制,有效提升了硬盘写入性能。
[0080]
可以理解的,响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作没有执行先后顺序的限制。
[0081]
步骤s202、响应于分片文件传输完成请求,获取各个分片文件的第一信息摘要总值,所述分片文件传输完成请求为http post请求。
[0082]
信息摘要值(message-digest algorithm,简称md5),一种被广泛使用的密码散列函数,可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致。本实施例中,第一信息摘要总值可以通过对各个分片文件进行组合后计算整体文件的第一信息摘要总值。
[0083]
可选地,客户端在将所有分片文件传输至服务器端后,向服务器发送分片文件传输完成请求,此处的分片文件传输完成请求采用的是http post请求,可以有效保证在有不同文件传输时的信息覆盖,本实施例中针对不同的信息传输,实现了http协议的灵活切换。在一种可实现中,服务端接收切片文件成功后,向客户端返回200ok,上传http协议。
[0084]
步骤s203、在所述第一信息摘要总值与所述目标传输文件的第二信息摘要总值匹配时,将各个分片文件组合得到所述目标传输文件。
[0085]
本实施例中,服务器根据各个分片文件计算整体文件的md5值,如果计算得到的md5值与目标传输文件的md5值相同,说明分片文件传输过程中没有出现丢包、数据篡改等问题,将各个分片文件组合得到目标传输文件,有效保证了数据的完整性。在一可实现中,目标传输文件的md5值可以由客户端向服务器发送。
[0086]
在一些实施例中,采用分片文件进行数据传输时,分片文件可以是并行传输的,为了保证分片时序的一致性,可以对各个分片文件分配分片号,并在各分片传输到服务器后确定到达标志。
[0087]
可以理解的,本实施例通过将大文件分片成若干个分片文件,并且在进行分片文件传输时,采用http put请求的形式进行传输,切片文件不再经由服务端临时文件转储,而由服务器端直接读取,此过程不仅可以有效提高文件的传输效率,保证文件的传输完整性,且服务器端无需创建临时文件,大幅降低了服务端磁盘io负载,尤其在虚拟机场景下,可以大幅降低由此产生的网络磁盘相关的网络负载。此外,本实施例针对不同的信息传输,实现了灵活协议切换。
[0088]
请参照图3,图3为本技术实施例提供的另一种数据传输方法的流程示意图,在上述实施例的基础上,本实施例首先获取目标传输文件的基本信息,并向客户端发送指示信息,客户端基于指示信息生成分片并上传,具体地,在读取目标传输文件的分片文件(步骤s201)之前,还包括步骤s301和步骤s302。
[0089]
步骤s301、响应于文件传输请求,获取目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为http post请求。
[0090]
可以理解的,第二信息摘要总值即文件全文md5值,任务标识为该目标传输文件的过程唯一标识码taskid,由客户端生成,在客户端/服务器之间保证上传任务唯一性。
[0091]
其中,除了目标传输文件的第二信息摘要总值和任务标识之外,还可以包括文件名filename、文件大小size等信息,其中,文件长度或者文件大小也可以用于校验文件传输的完整性。
[0092]
在一种可实现中,用户首先在客户端上选择对应的目标传输文件,或者客户端可以利用js脚本通过onchange事件获取用户选取的目标传输文件,并读取文件大小、计算文件全文md5值等信息,并为目标传输文件创建唯一任务标识taskid,然后向服务器端发起文件传输请求。
[0093]
步骤s302、向请求端发送第一指示信息,所述第一指示信息携带所述任务标识,用于指示所述请求端生成所述任务标识对应的目标传输文件的分片文件,并发起分片文件传输请求。
[0094]
本实施例中,在第一指示信息中携带任务标识,可以有效保障文件传输的正确性和唯一性。
[0095]
客户端在接收到第一指示信息后,对目标传输文件进行分片操作,具体而言,将文件切分成固定大小的若干分片,并可以在发起分片文件传输请求时将分片总数,本分片的偏移量,本分片文件,本片文件的md5值,传送给服务器。以将目标传输文件切分为3个分片文件为例,如下表1所示:
[0096]
表1:
[0097][0098]
在一些实施例中,服务器还可以根据客户端传输的目标传输文件的基本信息校验文件大小是否需要进行分片传输,在需要进行分片传输时向客户端发送第一指示信息,在不需要进行分片传输时可以指示客户端直接发送全文文件。
[0099]
在一种实施方式中,在获取目标传输文件的基本信息(步骤s301)之后,还可以包括以下步骤:将所述目标传输文件的基本信息存储至目标数据库中。
[0100]
本实施例中,目标数据库可以为持久化存储设备。服务器在将基本信息存储至目标数据库后,向客户端返回http消息,例如返回http/200ok,并向客户端发送第一指示信息。可以理解的,请求端即客户端。
[0101]
示例性地,在目标数据库中创建该目标传输文件对应的文件夹,并将其目标信息存储在该文件夹中,可以实现在存在多个目标传输文件时,进行对应信息的存储和区分。
[0102]
在一种实施方式中,首先对分片文件进行校验,进而对整个文件进行校验,可以实现对不符合要求的分片及时重传,同时可以进一步保证文件的传输完整性,具体地,在获取各个分片文件的第一信息摘要总值(步骤s202)之前,还可以包括以下步骤:
[0103]
每读取一个分片文件,获取所述分片文件的信息摘要值;
[0104]
校验所述分片文件的信息摘要值是否与其对应的预设值相匹配,若各个分片文件均与各自对应的预设值相匹配,则执行获取各个分片文件的第一信息摘要总值的步骤。
[0105]
若分片文件的信息摘要值与其对应的预设值不匹配,则向请求端发送第二指示信息,所述第二指示信息用于指示所述请求端重新发送对应分片文件的分片文件传输请求,所述重新发送的分片传输请求中携带所述分片文件对应的分片更新文件。
[0106]
具体地,服务器每接收一个分片文件,读取该分片文件的信息摘要值,并对该分片文件进行校验,如果校验不通过则指示客户端重传对应的分片文件。
[0107]
可选地,终端设备在生成分片文件时,相应计算每一个分片文件的初始信息摘要值(即,后文中的预设值),服务器端在接收到分片文件时,利用该初始信息摘要值对接收的分片文件进行校验。
[0108]
可选地,客户端在传输分片文件的过程中可以采用循环发送的方式进行传输,也就是说,客户端通过识别所生成的所有分片文件中还是存在没有发送分片文件,如果存在,则向服务器发送该分片文件对应的分片文件传输请求,直到所有分片文件发送完成。
[0109]
进一步地,在每读取一个分片文件之后,还包括以下步骤:
[0110]
针对每一个分片文件,创建对应的分片文件存储空间;
[0111]
将每一个分片文件写入至其对应的分片文件存储空间中,若接收到分片文件对应的分片更新文件,则将所述分片更新文件写入至对应分片文件存储空间中,并覆盖所述分片文件存储空间中的当前分片文件。
[0112]
本实施例中,服务器在接收到分片文件时,写入到对应的存储空间中,在接收到该分片文件的分片更新文件时,进行分片文件的覆盖,在分片文件传输完成时,每个存储空间仅对应一个分片文件,不会产生磁盘冗余的问题。
[0113]
在一种实施方式中,为了进一步实现数据的完整性传输,同时保证系统的稳定运行状态,所述方法还包括以下步骤:
[0114]
生成第三指示信息,并向请求端发送所述第三指示信息;其中,所述第三指示信息用于指示所述目标传输文件传输成功或者传输失败。
[0115]
示例性的,在所述第一信息摘要总值与所述目标传输文件的第二信息摘要总值匹配时,判定为目标传输文件传输成功,此时生成第三指示信息,客户端接收到第三指示信息时,中止该目标传输文件的相关请求操作,以避免客户端针对该目标传输文件向服务器频繁发出请求,影响系统稳定运行。
[0116]
在一种可实现中,客户端在全部分片上传完成后,调用完成验证接口,服务器端根据基本信息中的md5,对全文进行一致性校验,并返回上传成功(200ok)或失败(400bad request)的第三指示信息。
[0117]
在一种可实现中,客户端在预设时间段内没有接收到第三指示信息,则默认目标文件传输超时,中止该目标传输文件的相关请求操作,本领域技术人员可以结合实际应用和现有技术对该预设时间段进行适应性设定。
[0118]
请参照图4,图4为本技术实施例提供的一种数据传输方法的流程示意图,该方法可以应用于客户端。示例性的,以终端设备10中的浏览器作为客户端为例,包括步骤s401和步骤s402。
[0119]
步骤s401、向服务器发送分片文件传输请求,所述分片文件传输请求携带目标传输文件的分片文件,所述分片文件传输请求为http put请求;
[0120]
步骤s402、若各个分片传输完成,则向所述服务器发送分片传输完成请求,所述各个分片文件传输完成请求为http post请求。
[0121]
在一种实施方式中,在向服务器发送分片文件传输请求之前,还可以包括以下步骤:
[0122]
向服务器发送文件传输请求,所述文件传输请求携带目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为
http post请求;
[0123]
接收所述服务器传输的第一指示信息,生成所述目标传输文件的分片文件,其中所述第一指示信息携带所述目标传输文件的任务标识。
[0124]
在一种实施方式中,所述方法还可以包括以下步骤:
[0125]
接收所述服务器传输的第二指示信息,所述第二指示信息用于指示重新发送对应分片文件的分片文件传输请求;
[0126]
向所述服务器重新发送所述分片文件的分片文件传输请求,所述重新发送的分片文件传输请求携带所述分片文件对应的分片更新文件。
[0127]
在一种实施方式中,所述方法还可以包括以下步骤:
[0128]
若在预设时间段内没有接收到服务器发送的第三指示信息,则中止所述目标传输文件的分片文件传输进程,并生成第四指示信息;
[0129]
所述第三指示信息用于指示所述目标传输文件传输成功或者失败,所述第四指示信息用于指示所述目标传输文件传输超时。
[0130]
在此需要说明的是,本实施例提供的上述方法,其实现原理已在上述实施例中进行了详述,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0131]
请参照图5,图5为本技术实施例提供的又一种数据传输方法的流程示意图,包括如下流程:
[0132]
步骤s501、用户在客户端选择目标传输文件。
[0133]
步骤s502、如果用户没有选择目标传输文件,客户端可以利用js脚本通过onchange事件获取用户选取的目标传输文件。
[0134]
步骤s503、客户端读取目标传输文件大小、长度等。
[0135]
步骤s504、客户端计算目标传输文件md5,具体地,可以利用spark-md5.js计算。
[0136]
可以理解的,上述步骤s501-s504,为客户端读取并验证目标传输文件阶段。
[0137]
步骤s505、客户端为目标传输文件创建唯一字符串taskid。
[0138]
步骤s506、客户端发送步骤1:upload/begin请求(文件传输请求,携带目标传输文件的基本信息),以http post请求的形式发送至服务器。
[0139]
具体地,客户端发起http post请求,向服务器提交文件名,文件全文md5值,文件长度等信息,以及过程唯一识别码taskid。
[0140]
步骤s507、服务器记录目标传输文件的基本信息并存储到目标数据库。
[0141]
具体地,服务器将上述upload/begin请求落入持久化存储设备,并返回http/200ok。
[0142]
步骤s508、客户端对目标传输文件进行分片操作,并对分片进行初始置位,例如分片总数为a,并置初始分片号0,方便记录分片传输进程。
[0143]
步骤s509、客户端设置执行条件:判断是否存在未发送分片,如果有,则执行步骤s510,如果无,则执行步骤s513。
[0144]
步骤s510、客户端计算分片文件md5、分片文件lsize等。
[0145]
步骤s511、客户端发送步骤2:upload/slice请求(分片文件传输请求),以http put请求的形式发送至服务器。
[0146]
具体地,客户端针对分割完的分片,采用http put请求向服务端循环发起分片数据上传,服务端接收成功后,可以返回200ok。
[0147]
步骤s512、服务器对分片文件进行校验及保存操作。
[0148]
可以理解的,上述步骤s505-s512为分片文件传输阶段。
[0149]
步骤s513、客户端发送请求3:upload/finish请求(分片文件传输完成请求);
[0150]
步骤s514、服务器计算分片文件的md5总值,并向客户端返回目标传输文件的传输成功或者失败的结果。
[0151]
具体地,客户端在全部分片上传完成后,调用完成验证接口,服务器端根据发送步骤1上传之md5,对全文进行一致性校验,并返回上传成功(200ok)或失败(400bad request)。
[0152]
步骤s515、流程中止。
[0153]
可以理解的,上述步骤s513-s515为流程结束阶段。
[0154]
本实施例采用了基于put方法的自定义传输方式,同时优化了传输过程中的控制协议报文格式,进而有效降低现有技术中基于post:multipart/form-data方式上传引发的服务器磁盘冗余io性能问题,同时优化了web/server交互的整体协议流程.
[0155]
在此需要说明的是,本实施例提供的上述方法,其实现原理已在上述实施例中进行了详述,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0156]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0157]
请参照图6,图6提供一种数据传输装置,如图5所示,包括:
[0158]
读取模块61,其设置为响应于分片文件传输请求,读取目标传输文件的分片文件,所述分片文件传输请求为http put请求;
[0159]
信息获取模块62,还设置为响应于分片文件传输完成请求,获取各个分片文件的第一信息摘要总值,所述各个分片文件传输完成请求为http post请求;
[0160]
文件获取模块63,其设置为在所述第一信息摘要总值与所述目标传输文件的第二信息摘要总值匹配时,将各个分片文件组合得到所述目标传输文件。
[0161]
在一种实施方式中,所述装置还包括:
[0162]
基本信息获取模块,其设置为响应于文件传输请求,获取目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为http post请求;
[0163]
第一指示模块,其设置为向请求端发送第一指示信息,所述第一指示信息携带所述任务标识,用于指示所述请求端生成所述任务标识对应的目标传输文件的分片文件,并发起分片文件传输请求。
[0164]
在一种实施方式中,所述信息获取模块62,还设置为每读取一个分片文件,获取所述分片文件的信息摘要值;所述装置还包括:
[0165]
校验模块,其设置为校验所述分片文件的信息摘要值是否与其对应的预设值相匹配,若各个分片文件均与各自对应的预设值相匹配,则执行获取各个分片文件的第一信息摘要总值的步骤。
[0166]
在一种实施方式中,所述装置还包括:
[0167]
第二指示模块,其设置为在分片文件的信息摘要值与其对应的预设值不匹配时,向请求端发送第二指示信息,所述第二指示信息用于指示所述请求端重新发送对应分片文件的分片文件传输请求,所述重新发送的分片传输请求中携带所述分片文件对应的分片更新文件。
[0168]
在一种实施方式中,所述装置还包括:
[0169]
创建模块,其设置为针对每一个分片文件,创建对应的分片文件存储空间;
[0170]
写入更新模块,其设置为将每一个分片文件写入至其对应的分片文件存储空间中,若接收到分片文件对应的分片更新文件,则将所述分片更新文件写入至对应分片文件存储空间中,并覆盖所述分片文件存储空间中的当前分片文件。
[0171]
在一种实施方式中,所述装置还包括:
[0172]
第三指示模块,其设置为生成第三指示信息,并向请求端发送所述第三指示信息;其中,所述第三指示信息用于指示所述目标传输文件传输成功或者传输失败。
[0173]
在一种实施方式中,所述装置还包括:存储模块,其设置为将所述目标传输文件的基本信息存储至目标数据库中。
[0174]
请参照图7,图7为本技术实施例提供的一种数据传输装置,如图6所示,包括第一请求模块71和第二请求模块72,其中,
[0175]
第一请求模块71,其设置为向服务器发送分片文件传输请求,所述分片文件传输请求携带目标传输文件的分片文件,所述分片文件传输请求为http put请求;
[0176]
第二请求模块72,其设置为若各个分片传输完成,则向所述服务器发送分片传输完成请求,所述各个分片文件传输完成请求为http post请求。
[0177]
在一种实施方式中,所述装置还包括:
[0178]
第三请求模块,其设置为向服务器发送文件传输请求,所述文件传输请求携带目标传输文件的基本信息,所述基本信息包括目标传输文件的第二信息摘要总值和任务标识,所述文件传输请求为http post请求;
[0179]
第一接收模块,其设置为接收所述服务器传输的第一指示信息,生成所述目标传输文件的分片文件,其中所述第一指示信息携带所述目标传输文件的任务标识。
[0180]
在一种实施方式中,所述装置还包括:
[0181]
第二接收模块,其设置为接收所述服务器传输的第二指示信息,所述第二指示信息用于指示重新发送对应分片文件的分片文件传输请求;
[0182]
所述第一请求模块71还设置为,向所述服务器重新发送所述分片文件的分片文件传输请求,所述重新发送的分片文件传输请求携带所述分片文件对应的分片更新文件。
[0183]
在一种实施方式中,所述装置还包括:
[0184]
中止模块,其设置为在预设时间段内没有接收到服务器发送的第三指示信息时,中止所述目标传输文件的分片文件传输进程,并生成第四指示信息;
[0185]
所述第三指示信息用于指示所述目标传输文件传输成功或者失败,所述第四指示信息用于指示所述目标传输文件传输超时。
[0186]
请参照图8,图8为本技术实施例提供的一种服务器,包括:存储器81和处理器82;
[0187]
所述存储器81存储计算机执行指令;
[0188]
所述处理器82执行所述存储器81存储的计算机执行指令,使得所述服务器82执行所述的数据传输方法。
[0189]
请参照图9,图9为本技术实施例提供的一种终端设备,包括:存储器91和处理器92;
[0190]
所述存储器81存储计算机执行指令;
[0191]
所述处理器92执行所述存储器91存储的计算机执行指令,使得所述终端设备执行所述的数据传输方法。
[0192]
本技术实施例相应还提供一种可读存储介质,所述可读存储介质中存储有计算机指令,所述计算机执行指令被处理器执行时用于实现所述的数据传输方法。
[0193]
本技术实施例相应还提供一种程序产品,包括计算机指令,该计算机指令被处理器执行时实现所述的数据传输方法。
[0194]
在此需要说明的是,本技术提供的上述服务器、设备、可读存储介质以及程序产品,能够相应地实现上述方法实施例中所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0195]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
[0196]
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
[0197]
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
[0198]
在本技术实施例的描述中,术语“和/或”仅仅表示一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,术语“至少一种”表示多种中的任一种或多种中的至少两种的任意组合,例如,包括a、b、中的至少一种,可以表示包括a、b和c沟通的集合中选择的任意一个或多个元素。此外,术语“多个”的含义是两个或两个以上,除非是另有精确具体地规定。
[0199]
在本技术实施例的描述中,术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排
他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0200]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1