一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件传输方法、装置、电子设备及存储介质与流程

2022-11-28 14:41:22 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种文件传输方法、装置、电子设备及存储介质。


背景技术:

2.在javascript场景下,向服务端上传文件时,通常需要对文件整体进行编码、校验,针对小文件而言,编码速度可以接受,但针对大文件而言,编码速度明显变慢,影响传输效率。
3.目前,少数javascript方案利用js的blob、formdata对象实现分片上传功能,但是在使用js的blob、formdata对象传输时,若传输过程中出现传输中断的情况,需要重新上传,且上传速度很慢。
4.由此可见,现有技术中在javascript场景下进行文件上传时,若整体上传,由于编码速度受限会影响传输效率;若分片上传,在传输中断时需重新上传整体文件且传输速度受限,同样影响传输效率。


技术实现要素:

5.本技术实施例提供了一种文件传输方法、装置、电子设备及存储介质,以解决现有技术中文件传输时存在的传输效率低的问题。
6.第一方面,本技术实施例提供了一种文件传输方法,应用于客户端设备,包括:
7.在待传输文件为需分片上传的第一文件的情况下,基于协程方式对所述第一文件依序进行分片处理,获取n个文件分片对应的n个文件对象,所述文件对象包括第一标识信息以及分片对象,n为大于或者等于2的整数;
8.根据所述n个文件对象分别对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象,m为大于或者等于1且小于或者等于n的整数;
9.针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象。
10.第二方面,本技术实施例提供了一种文件传输装置,应用于客户端设备,包括:
11.分片获取模块,用于在待传输文件为需分片上传的第一文件的情况下,基于协程方式对所述第一文件依序进行分片处理,获取n个文件分片对应的n个文件对象,所述文件对象包括第一标识信息以及分片对象,n为大于或者等于2的整数;
12.确定模块,用于根据所述n个文件对象对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象,m为大于或者等于1且小于或者等于n的整数;
13.处理模块,用于针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象。
14.第三方面,本技术实施例提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实
现如上述第一方面所述的文件传输方法的步骤。
15.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的文件传输方法的步骤。
16.本技术实施例技术方案,通过基于协程方式将第一文件依序进行分片处理,获取n个文件分片对应的n个包括第一标识信息以及分片对象的文件对象,可以基于协程分片处理减小对前端的压力,且可以基于第一标识信息保证分片重传或续传,优化传输方式;在获取n个文件对象分别对应的第一标识信息之后,根据n个第一标识信息在n个分片对象中确定需上传的m个分片对象,针对m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传m个分片对象,可以提高传输效率。
附图说明
17.图1表示本技术实施例提供的文件传输方法的示意图;
18.图2表示本技术实施例提供的客户端设备与接收端设备交互的示意图;
19.图3表示本技术实施例提供的进行文件预检、根据预检结果执行相应操作的实施流程图;
20.图4表示本技术实施例提供的文件传输装置的示意图;
21.图5表示本技术实施例提供的电子设备结构示意图。
具体实施方式
22.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
24.在本技术的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
25.本技术针对现有技术中在javascript场景下上传文件时,存在的整体上传由于编码速度受限影响传输效率的问题、分片上传在传输中断的情况下需重新上传整体文件影响传输效率的问题,提供了一种文件传输方法,通过javascript generator(生成器)机制实现文件协程分片处理、分片并行上传,可以提高传输速度,且通过设置分片标识,可以基于分片标识保证分片重传或续传,避免重新上传整体文件,优化了传输方式、提高了传输效率。
26.下面对本技术实施例提供的文件传输方法进行介绍,参见图1所示,该方法包括:
27.步骤101、在待传输文件为需分片上传的第一文件的情况下,基于协程方式对所述
第一文件依序进行分片处理,获取n个文件分片对应的n个文件对象,所述文件对象包括第一标识信息以及分片对象,n为大于或者等于2的整数。
28.本技术实施例提供的文件传输方法为javascript场景下,客户端设备的浏览器或者应用程序向接收端设备上传文件的应用场景,javascript作为一种直译式脚本语言,需要在浏览器或者应用程序环境下运行,客户端设备为安装浏览器或者应用程序的设备。客户端设备首先确定待传输文件为需分片上传的第一文件还是不需要分片上传的第二文件,具体可以根据文件大小来确定。在确定待传输文件为需分片上传的第一文件的情况下,基于协程方式对第一文件依序进行分片处理,在分片处理成功的情况下,获取第一文件对应的至少两个文件对象。其中,协程可以认为是用户空间线程,操作系统对其一无所知,需要开发人员在线程中设计好调度,用来执行协作式多任务。js在浏览器里没有直接的多线程能力,利用协程调度进行线程复用,间接拥有了多线程能力。
29.在基于协程方式对第一文件依序进行分片处理时,按照第一预设顺序对第一文件依次进行分片处理,这里的第一预设顺序为第一文件对应的n个文件分片的排列顺序(切割顺序)。通过对第一文件依序进行分片处理,可以获取每个文件分片对应的包括第一标识信息以及分片对象的文件对象。本技术基于协程方式依序处理,相较于对整体文件进行处理的方式而言,可以减少对前端的压力。其中,第一标识信息用于区分不同的文件分片,每一文件分片对应于一文件对象,文件对象所包括的分片对象为基于文件分片生成的用于向接收端设备传输的内容。通过针对文件分片设置对应的第一标识信息,可以保证分片对象的重传或续传,避免重新上传整体文件,优化了传输方式。
30.步骤102、根据所述n个文件对象分别对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象,m为大于或者等于1且小于或者等于n的整数。
31.在获取n个文件对象分别对应的第一标识信息之后,可以根据n个第一标识信息,在n个文件对象对应的n个分片对象中确定需上传的m个分片对象。其中m的取值大于或者等于1且小于或者等于n,在m的取值小于n时,确定n个文件分片对应的n个分片对象中,需上传部分分片对象,在m的取值等于n时,确定n个文件分片对应的n个分片对象中,需上传全部分片对象。
32.步骤103、针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象。
33.在n个分片对象中确定出需上传的m个分片对象之后,针对m个分片对象,采用协程方式、按照第二预设顺序依次在系统上注册上传任务,且在完成上传任务的注册之后,以并行上传的方式,将m个分片对象上传至接收端设备,可以通过协程注册上传任务、并行传输,提高传输效率。
34.本技术上述实施过程,通过基于协程方式将第一文件依序进行分片处理,获取n个文件分片对应的n个包括第一标识信息以及分片对象的文件对象,可以基于协程分片处理减小对前端的压力,且可以基于第一标识信息保证分片重传或续传,优化传输方式;在获取n个文件对象分别对应的第一标识信息之后,根据n个第一标识信息在n个分片对象中确定需上传的m个分片对象,针对m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传m个分片对象,可以提高传输效率。
35.下面对获取第一文件对应的n个文件对象的过程进行介绍。在待传输文件为需分
片上传的第一文件的情况下,基于协程方式对所述第一文件依序进行分片处理,获取n个文件分片对应的n个文件对象,包括:在待传输文件对应的分片数量大于预设阈值的情况下,确定待传输文件为所述第一文件;基于协程方式对所述第一文件构建分片队列,根据所述分片队列,对所述第一文件依序进行分片处理;在分片处理成功的情况下,获取所述第一文件对应的n个文件对象,所述n个文件对象存储于所述分片队列中。
36.针对待传输文件,根据待传输文件的文件大小确定分片数量,具体为基于待传输文件的文件大小以及预设文件分片大小(固定值)之比,确定分片数量。在确定分片数量之后,将分片数量与预设阈值进行比较,这里的预设阈值可以为分片对象的单次最大传输量,若分片数量大于预设阈值,即,单次无法完成全部文件分片对应的分片对象的传输,则确定待传输文件为第一文件,否则确定待传输文件为第二文件。在确定待传输文件为第一文件之后,针对第一文件,基于协程方式构建第一文件对应的分片队列,此时的队列为一个空队列,基于所构建的分片队列,对第一文件依序进行分片处理,并在分片处理成功的情况下,获取第一文件对应的n个文件对象,将n个文件对象存储于分片队列中。
37.本技术上述实施过程,可以基于待传输文件对应的分片数量与预设阈值的关系,确定待传输文件为第一文件还是第二文件,实现依据分片数量简单快速的确定文件类别;在确定待传输文件为第一文件的情况下,采用协程方式对第一文件依序进行分片处理,可以实现以分片的形式上传文件。
38.下面对根据分片队列,对第一文件依序进行分片处理的过程进行介绍。在根据分片队列,对第一文件依序进行分片处理时,包括:根据所述分片队列,对所述第一文件依序进行切割;针对每次切割获取一文件分片,根据所述文件分片确定所述文件分片对应的第一标识信息、根据所述文件分片以及所述文件分片的关联信息生成所述文件分片对应的分片对象。
39.在基于协程方式对第一文件构建分片队列之后,根据分片队列,对第一文件依序进行切割,针对每次切割,可以得到一文件分片,然后针对该文件分片,根据文件分片对应的分片内容确定文件分片对应的第一标识信息,根据文件分片以及文件分片的关联信息生成文件分片对应的分片对象,进而生成包括第一标识信息以及分片对象的文件对象,在得到文件对象之后,将文件对象存储至分片队列中。
40.本技术通过生成器自动维护自身状态的特性,来实现代码执行控制权的切换,这里的代码执行控制权可以理解为生成文件对象的控制权,在初始状态下,生成器函数不执行任何代码,根据大文件(第一文件)计算得出可迭代对象,这里的可迭代对象为文件分片,此处需设置该可迭代对象只能迭代一次,从而实现依序计算分片文件的文件对象。
41.生成器函数的yield关键字可以交出函数的执行权,然后js引擎去执行这个函数后面的语句,使用yield和next()方法就能不断的交出和恢复函数的执行权,从而实现非阻塞的计算文件对象。
42.需要说明的是,通过分片处理所得到的n个文件对象对应的获取顺序与n个文件分片对应的排列顺序可以相同或者相区别,即,文件对象的获取次序与文件对象对应的文件分片的切割次序可以有所区别。其中,所述第一标识信息为对所述文件分片采用安全散列算法sha计算获取的sha值;所述分片对象基于所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置以及第二标识信息生成,所述第二标识信息基于所述第一标识信
息和传输标识确定,所述传输标识用于进行上传鉴权。
43.本实施例在确定第一标识信息时,可以采用安全散列算法(secure hash algorithm,sha)对文件分片的分片内容进行计算,获取对应的sha值,将对应的sha值确定为第一标识信息,由于不同的文件分片的分片内容相区别,通过基于分片内容计算第一标识信息,可以保证文件分片对应的第一标识信息的唯一性。
44.本实施例中的sha算法可以为sha1算法或者sha系列的其他算法。例如,sha算法为sha1算法,则可以采用sha1算法对文件分片的分片内容进行计算,获取sha1值,将所获取的sha1值确定为文件分片的第一标识信息。
45.在生成分片对象时,基于文件分片以及文件分片的关联信息生成,文件分片的关联信息至少包括文件分片的偏移量、文件分片的分片起始位置以及第二标识信息,其中第二标识信息基于第一标识信息以及传输标识确定,且传输标识为用于上传鉴权的标识,在用户登录客户端时获取。通过获取传输标识,可以进行文件上传的权限认证,以保证文件可正常上传。通过基于第一标识信息以及传输标识确定第二标识信息,可以使得第二标识信息集成上传鉴权功能以及标识分片对象功能。
46.本技术上述实施过程,通过基于分片队列对第一文件依序进行切割,可以通过协程处理方式进行分片,依次获取n个包括第一标识信息以及分片对象的文件对象;通过基于分片内容确定第一标识信息,可以保证第一标识信息的唯一性。
47.在本技术一实施例中,所述分片对象上传至所述接收端设备经所述接收端设备解析后,由所述接收端设备获取所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置以及所述第二标识信息;
48.其中,所述第二标识信息用于上传鉴权和标识所述分片对象,所述接收端设备根据m个分片对象对应的所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置进行分片拼接。
49.客户端设备将m个分片对象上传至接收端设备之后,由接收端设备对m个分片对象进行解析,针对每个分片对象,获取文件分片、文件分片的偏移量、文件分片的分片起始位置以及第二标识信息。其中,第二标识信息集成上传鉴权功能以及标识分片对象功能,通过集成的上传鉴权功能可以保证分片对象上传至接收端设备,通过集成的标识分片对象功能,可以区分不同的分片对象。
50.接收端设备在获取m个分片对象对应的文件分片、文件分片的偏移量、文件分片的分片起始位置之后,可以进行分片拼接,在进行分片拼接时,基于文件分片的偏移量和分片起始位置,将m个文件分片进行拼接,或者,将m个文件分片与接收端设备存储的与m个文件分片属于同一文件的其他文件分片进行拼接。通过由接收端设备进行分片拼接,可以实现在接收端设备侧获取完整的文件。
51.在本技术一实施例中,在以并行上传的方式向接收端设备上传所述m个分片对象之后,还包括:
52.在根据所述分片对象对应的第二标识信息确定至少一个目标分片对象上传失败的情况下,重传所述目标分片对象或者断点续传所述目标分片对象。
53.由于每一个分片对象对应于一个第二标识信息,在以并行上传的方式向接收端设备上传m个分片对象的情况下,在至少一个目标分片对象上传失败时,可以根据第二标识信
息确定至少一个目标分片对象。此时,需要确定至少一个目标分片对象的传输状态,若至少一个目标分片对象由于断网导致仅上传了一部分内容,则可以断点续传;若至少一个目标分片对象需要重传(如客户端设备在断网时上传失败导致的需要重传,或者,接收端设备异常时接收失败导致的需要重传),则重新上传至少一个目标分片对象。且针对目标分片对象为多个的情况,在重传或者续传时可以依据失败的次序进行传输,即可以基于生成的重传任务队列进行传输。
54.通过针对每个分片对象设置一第二标识信息,在出现传输故障时,基于第二标识信息断点续传或者重新传输出错的分片对象,可以提高重传效率。
55.下面对在n个分片对象中确定需上传的m个分片对象的过程进行介绍。在根据所述n个文件对象分别对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象时,包括:将所述n个文件对象对应的n个第一标识信息上传至所述接收端设备;根据所述接收端设备反馈的不包括m个第一标识信息对应的文件分片的第一比对结果,在所述n个分片对象中确定需上传的所述m个分片对象;其中,所述第一比对结果由所述接收端设备将所述n个第一标识信息与所述接收端设备存储的文件分片所对应的分片标识信息进行比对确定。
56.在获取n个文件对象分别对应的第一标识信息之后,可以将n个第一标识信息上传至接收端设备,由接收端设备将n个第一标识信息与接收端设备存储的文件分片所对应的分片标识信息进行比对,在n个第一标识信息均与接收端设备存储的文件分片对应的分片标识信息匹配的情况下,确定接收端设备存储有n个第一标识信息对应的n个文件分片,接收端设备可以向客户端设备反馈文件已上传的提示,并反馈文件地址。在n个第一标识信息与接收端设备存储的文件分片对应的分片标识信息均不匹配的情况下,客户端设备接收接收端设备反馈的提示,向接收端设备上传文件分片对应的分片对象。在n个第一标识信息中的部分与接收端设备存储的文件分片对应的分片标识信息匹配的情况下,客户端设备接收接收端设备反馈的提示,向接收端设备上传相应文件分片对应的分片对象。
57.其中,在n个第一标识信息与接收端设备存储的文件分片对应的分片标识信息均不匹配的情况下,或者,在n个第一标识信息中的部分与接收端设备存储的文件分片对应的分片标识信息匹配的情况下,客户端设备接收接收端设备反馈的不包括m个第一标识信息对应的文件分片的第一比对结果,m的取值小于或者等于n。在n个第一标识信息与接收端设备存储的文件分片对应的分片标识信息均不匹配的情况下,m的取值等于n;在n个第一标识信息中的部分与接收端设备存储的文件分片对应的分片标识信息匹配的情况下,m的取值小于n。客户端设备在获取第一比对结果之后,基于第一比对结果,在n个分片对象中确定需上传的m个分片对象。针对接收端设备而言,其可以存储文件分片、文件分片的第一标识信息、文件分片的偏移量和分片起始位置。
58.下面通过一具体实施流程对上述过程进行介绍,参见图2所示,客户端设备在根据待传输文件对应的分片数量确定待传输文件为第一文件的情况下,将第一文件对应的n个文件分片的n个第一标识信息上传至接收端设备。接收端设备根据n个第一标识信息检测是否已存储n个第一标识信息对应的文件分片,若未存储n个第一标识信息对应的文件分片,反馈第一提示信息,客户端设备基于第一提示信息上传n个文件分片对应的分片对象。若存储n个第一标识信息中的部分第一标识信息对应的文件分片,反馈第二提示信息,客户端设备基于第二提示信息确定接收端设备未存储的文件分片,向接收端设备上传相应的文件分
片对应的分片对象。若存储n个第一标识信息对应的文件分片,反馈第三提示信息以及文件地址,客户端设备接收第三提示信息以及文件地址,文件地址可以携带在第三提示信息中,也可以独立发送。
59.本技术上述实施过程,通过将n个第一标识信息上传至接收端设备,由接收端设备基于第一标识信息检测否存储有对应的文件分片,可以通过预检避免重复上传,实现节省上传时间以及存储空间;通过一次性发送n个第一标识信息,可以减少请求发送数量。
60.下面对以并行上传的方式将m个分片对象上传至接收端设备的过程进行介绍。在针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象时,包括:以协程方式,根据所述m个分片对象对应的排列次序,在系统上对所述m个分片对象依次注册上传任务;以并行方式,将所述m个分片对象上传至所述接收端设备。
61.客户端设备在向接收端设备上传m个分片对象时,根据m个分片对象对应的排列次序,以协程方式,在系统上依次注册上传任务,其中m个分片对象对应的排列次序可以为m个分片对象的获取次序。通过以协程方式依次注册上传任务,可以实现基于协程处理方式在系统上建立上传任务。在完成上传任务的注册之后,以并行方式,将m个分片对象上传至接收端设备,可以通过并行上传提高传输效率。其中在以并行方式上传m个分片对象时,需要考虑传输能力以及分片对象的数量,若m的取值为100,浏览器单次传输的分片对象的数量最多为10,则通过10次并行上传完成m个分片对象的上传,每次上传时,10个分片对象同时上传,实现以并行上传的方式上传分片对象;若m的取值小于10,则通过一次并行上传完成分片对象的上传。
62.在本技术一实施例中,在待传输文件为不需分片上传的第二文件的情况下,该方法还包括:
63.获取所述第二文件对应的第二文件标识信息并上传至所述接收端设备;
64.在接收到所述接收端设备反馈的不包括所述第二文件标识信息对应的第二文件的第二比对结果时,向所述接收端设备上传所述第二文件;
65.在接收到所述接收端设备反馈的包括所述第二文件标识信息对应的第二文件的第三比对结果时,获取所述第二文件的文件地址;
66.其中,在待传输文件对应的分片数量小于或者等于预设阈值时,确定待传输文件为所述第二文件;所述第二比对结果或所述第三比对结果由所述接收端设备将所述第二文件对应的第二文件标识信息与所述接收端设备存储的文件所对应的文件标识信息进行比对确定。
67.在待传输文件对应的分片数量小于或者等于预设阈值时,确定待传输文件为不需要分片上传的第二文件,此时获取第二文件对应的第二文件标识信息并上传至接收端设备,由接收端设备基于第二文件对应的第二文件标识信息检测接收端设备是否存储有第二文件。其中,在接收端设备确定第二文件对应的第二文件标识信息与接收端设备存储的某个文件所对应的文件标识信息匹配时,表明接收端设备存储有第二文件,接收端设备反馈第三比对结果,且接收端设备在反馈第三比对结果的同时可以反馈第二文件的文件地址,客户端设备接收第三比对结果以及第二文件的文件地址。在接收端设备确定第二文件对应的第二文件标识信息与接收端设备存储的文件所对应的文件标识信息均不匹配时,接收端
设备反馈第二比对结果,客户端设备接收第二比对结果,基于第二比对结果上传第二文件。
68.其中,第二文件对应的第二文件标识信息,为采用sha算法对文件内容进行计算得出,在上传第二文件时,无需分片,可以直接上传整个文件,且在上传第二文件时,可以生成第二文件对应的上传对象,上传对象可以基于第二文件、第二文件对应的第二文件标识信息以及传输标识生成,具体可以为根据第二文件对应的第二文件标识信息以及传输标识生成目标文件标识信息,基于目标文件标识信息和第二文件生成上传对象。
69.本技术上述实施过程,在根据分片数量确定待传输文件为第二文件的情况下,基于第二文件的文件内容确定第二文件对应的第二文件标识信息并上传至接收端设备,由接收端设备基于第二文件对应的第二文件标识信息检测是否存储有第二文件,并基于检测结果反馈比对结果,客户端设备基于比对结果上传文件或者获取文件地址,可以以正常上传方式上传第二文件,或者基于文件地址停止上传第二文件,以通过预检避免重复上传。
70.下面通过一具体实施流程对区分文件类型、对文件进行预检、根据预检结果执行相应操作的实施过程进行介绍,参见图3所示,包括如下步骤:
71.步骤301、客户端设备获取待传输文件对应的分片数量,在分片数量大于预设阈值时,确定待传输文件为第一文件,执行步骤302至步骤305;在分片数量小于或者等于预设阈值时,确定待传输文件为第二文件,执行步骤306至步骤309。
72.步骤302、客户端设备获取第一文件的n个文件分片对应的n个第一标识信息。
73.步骤303、客户端设备将n个第一标识信息上传至接收端设备。
74.步骤304、接收端设备根据n个第一标识信息确定接收端设备不包括m个第一标识信息对应的文件分片的第一比对结果,或者,接收端设备根据n个第一标识信息确定包括n个第一标识信息对应的文件分片的第四比对结果。
75.步骤305、客户端设备接收接收端设备反馈的第一比对结果或者第四比对结果,根据第一比对结果确定需上传的m个文件分片对应的分片对象,并以并行方式上传m个分片对象,或者,根据第四比对结果确定第一文件已上传,获取第一文件的文件地址。
76.步骤306、客户端设备获取第二文件的第二文件标识信息。
77.步骤307、客户端设备将第二文件的第二文件标识信息上传至接收端设备。
78.步骤308、接收端设备根据第二文件的第二文件标识信息确定接收端设备不包括第二文件的第二比对结果,或者,接收端设备根据第二文件的第二文件标识信息确定接收端设备包括第二文件的第三比对结果。
79.步骤309、客户端设备接收接收端设备反馈的第二比对结果或者第三比对结果,根据第二比对结果确定需上传第二文件,并以正常方式上传第二文件,或者,根据第三比对结果确定第二文件已上传,获取第二文件的文件地址。
80.上述实施流程,在文件上传之前需要进行预检,若预检结果为文件已上传,则客户端设备获取文件已上传的通知,并可以获取文件地址,若预检结果为第二文件未上传,则走正常上传流程,若预检结果为第一文件至少部分未上传,则走分片上传流程;通过进行预检,可以避免重复上传,实现节省上传时间以及存储空间。
81.以上为本技术实施例提供的文件传输方法的整体实施流程,通过基于协程方式将第一文件依序进行分片处理,获取n个文件分片对应的n个包括第一标识信息以及分片对象的文件对象,可以基于协程分片处理减小对前端的压力,且可以基于第一标识信息保证分
片重传或续传,优化传输方式;在获取n个文件对象分别对应的第一标识信息之后,根据n个第一标识信息在n个分片对象中确定需上传的m个分片对象,针对m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传m个分片对象,可以提高传输效率。
82.进一步地,可以基于分片数量简单快速的确定文件类别,在确定待传输文件为第一文件的情况下,对第一文件进行分片处理,可以实现文件以分片形式上传;通过基于分片内容确定第一标识信息,可以保证第一标识信息的唯一性;通过基于文件内容确定文件标识信息,可以保证文件标识信息的唯一性。
83.通过进行预检可避免重复上传,实现节省上传时间以及存储空间;通过一次性发送n个第一标识信息,可以减少请求发送数量。
84.本技术实施例还提供一种文件传输装置,应用于客户端设备,如图4所示,该装置包括:
85.分片获取模块401,用于在待传输文件为需分片上传的第一文件的情况下,基于协程方式对所述第一文件依序进行分片处理,获取n个文件分片对应的n个文件对象,所述文件对象包括第一标识信息以及分片对象,n为大于或者等于2的整数;
86.确定模块402,用于根据所述n个文件对象分别对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象,m为大于或者等于1且小于或者等于n的整数;
87.处理模块403,用于针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象。
88.可选地,所述分片获取模块包括:
89.第一确定子模块,用于在待传输文件对应的分片数量大于预设阈值的情况下,确定待传输文件为所述第一文件;
90.构建子模块,用于基于协程方式对所述第一文件构建分片队列;
91.处理子模块,用于根据所述分片队列,对所述第一文件依序进行分片处理;
92.获取子模块,用于在分片处理成功的情况下,获取所述第一文件对应的n个文件对象,所述n个文件对象存储于所述分片队列中。
93.可选地,所述处理子模块进一步用于:
94.根据所述分片队列,对所述第一文件依序进行切割;
95.针对每次切割获取一文件分片,根据所述文件分片确定所述文件分片对应的第一标识信息、根据所述文件分片以及所述文件分片的关联信息生成所述文件分片对应的分片对象。
96.可选地,所述第一标识信息为对所述文件分片采用安全散列算法sha计算获取的sha值;
97.所述分片对象基于所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置以及第二标识信息生成,所述第二标识信息基于所述第一标识信息和传输标识确定,所述传输标识用于进行上传鉴权。
98.可选地,所述分片对象上传至所述接收端设备经所述接收端设备解析后,由所述接收端设备获取所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置以及所述第二标识信息;
99.其中,所述第二标识信息用于上传鉴权和标识所述分片对象,所述接收端设备根据m个分片对象对应的所述文件分片、所述文件分片的偏移量、所述文件分片的分片起始位置进行分片拼接。
100.可选地,所述装置还包括:
101.传输模块,用于在所述处理模块以并行上传的方式向接收端设备上传所述m个分片对象之后,在根据所述分片对象对应的第二标识信息确定至少一个目标分片对象上传失败的情况下,重传所述目标分片对象或者断点续传所述目标分片对象。
102.可选地,所述确定模块包括:
103.第一上传子模块,用于将所述n个文件对象对应的n个第一标识信息上传至所述接收端设备;
104.第二确定子模块,用于根据所述接收端设备反馈的不包括m个第一标识信息对应的文件分片的第一比对结果,在所述n个分片对象中确定需上传的所述m个分片对象;
105.其中,所述第一比对结果由所述接收端设备将所述n个第一标识信息与所述接收端设备存储的文件分片所对应的分片标识信息进行比对确定。
106.可选地,所述处理模块包括:
107.注册子模块,用于以协程方式,根据所述m个分片对象对应的排列次序,在系统上对所述m个分片对象依次注册上传任务;
108.第二上传子模块,用于以并行方式,将所述m个分片对象上传至所述接收端设备。
109.可选地,在待传输文件为不需分片上传的第二文件的情况下,所述装置还包括:
110.获取上传模块,用于获取所述第二文件对应的第二文件标识信息并上传至所述接收端设备;
111.上传模块,用于在接收到所述接收端设备反馈的不包括所述第二文件标识信息对应的第二文件的第二比对结果时,向所述接收端设备上传所述第二文件;
112.获取模块,用于在接收到所述接收端设备反馈的包括所述第二文件标识信息对应的第二文件的第三比对结果时,获取所述第二文件的文件地址;
113.其中,在待传输文件对应的分片数量小于或者等于预设阈值时,确定待传输文件为所述第二文件;所述第二比对结果或所述第三比对结果由所述接收端设备将所述第二文件对应的第二文件标识信息与所述接收端设备存储的文件所对应的文件标识信息进行比对确定。
114.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
115.本技术实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述文件传输方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
116.举例如下,图5示出了一种电子设备的实体结构示意图。如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,处理器510用于执行以下步骤:在待传输文件为需分片上传的第一文件的情况下,基于协程方式对所述第一文件依
序进行分片处理,获取n个文件分片对应的n个文件对象,所述文件对象包括第一标识信息以及分片对象,n为大于或者等于2的整数;根据所述n个文件对象分别对应的第一标识信息,在n个分片对象中确定需上传的m个分片对象,m为大于或者等于1且小于或者等于n的整数;针对所述m个分片对象,以协程方式依次注册上传任务,以并行上传的方式向接收端设备上传所述m个分片对象。处理器510还可以执行本技术实施例中的其他方案,这里不再进一步阐述。
117.此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
118.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述文件传输方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
119.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
120.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
121.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
122.本领域普通技术人员可以意识到,结合本技术实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
123.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
124.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
125.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
126.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
127.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
128.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献