文件的上传处理方法、装置、系统、电子设备及存储介质与流程
未命名
07-22
阅读:124
评论:0
1.本公开涉及计算机技术领域:
:,具体涉及文件传输、以及文件存储等等
技术领域:
:,尤其涉及一种文件的上传处理方法、装置、系统、电子设备及存储介质。
背景技术:
::2.由于网盘产品具有存储容量大等优势,能够帮助用户存储非常多的数据,受到各类用户的青睐。3.近年来,网盘使用中,对用户文件上传的需求也在不断发生着变化,其中就包括对于单个文件大小的限制,一直在往上增加,例如,相继打开了100gb、1tb、2tb的大小限制,在可见的预期时间内很可能再打开4tb、8tb等的限制。然而,随着文件大小限制的往上增加,随之而来的是用户视角文件上传失败率的增长。因为单个文件越大,对于上传过程中的网络稳定性、客户端硬件稳定性、客户端和服务端业务服务稳定性要求就越高。为了提高上传成功率,通常可以将一个大文件,拆分成多个数据块进行上传。且为了进一步提高上传成功率。在每个文件的上传逻辑中,设置有失败重试策略。技术实现要素:4.本公开提供了一种文件的上传处理方法、装置、系统、电子设备及存储介质。5.根据本公开的一方面,提供了一种文件的上传处理方法,包括:6.在接收客户端上传目标文件的多个数据块中各数据块的过程中,若检测并确定当前数据块的数据读取失败;7.确定读取失败的所述当前数据块的断点位置;8.基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。9.根据本公开的另一方面,提供了一种文件的上传处理方法,包括:10.在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;11.获取上传失败对应的所述当前数据块的断点位置;12.基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传。13.根据本公开的再一方面,提供了一种服务器,包括:14.检测模块,用于在接收客户端上传目标文件的多个数据块中各数据块的过程中,若检测并确定当前数据块的数据读取失败;15.确定模块,用于确定读取失败的所述当前数据块的断点位置;16.获取模块,用于基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。17.根据本公开的又一方面,提供了一种客户端设备,包括:18.检测模块,用于在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;19.获取模块,用于获取上传失败对应的所述当前数据块的断点位置;20.传输模块,用于基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传。21.根据本公开的再另一方面,提供了一种文件的上传处理系统,包括客户端设备和服务器,所述客户端设备和所述服务器通信连接,实现向所述服务器上传目标文件的多个数据块中各数据块;所述服务器采用如上方面所述的服务器,所述客户端设备采用如上方面所述的客户端设备。22.根据本公开的再又一方面,提供了一种电子设备,包括:23.至少一个处理器;以及24.与所述至少一个处理器通信连接的存储器;其中,25.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方面和任一可能的实现方式的方法。26.根据本公开的又另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上所述的方面和任一可能的实现方式的方法。27.根据本公开的又再一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方面和任一可能的实现方式的方法。28.根据本公开的技术,能够有效地提高文件上传的成功率。29.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。附图说明30.附图用于更好地理解本方案,不构成对本公开的限定。其中:31.图1是根据本公开第一实施例的示意图;32.图2是根据本公开第二实施例的示意图;33.图3是根据本公开第三实施例的示意图;34.图4是根据本公开第四实施例的示意图;35.图5是根据本公开第五实施例的示意图;36.图6是本公开提供的文件、数据块以及预设分片的关系示意图;37.图7是根据本公开第六施例的示意图;38.图8是根据本公开第七施例的示意图;39.图9是根据本公开第八施例的示意图;40.图10是根据本公开第九施例的示意图;41.图11是根据本公开第十施例的示意图;42.图12是用来实现本公开实施例的方法的电子设备的框图。具体实施方式43.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。44.显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。45.需要说明的是,本公开实施例中所涉及的终端设备可以包括但不限于手机、个人数字助理(personaldigitalassistant,pda)、无线手持设备、平板电脑(tabletcomputer)等智能设备;显示设备可以包括但不限于个人电脑、电视等具有显示功能的设备。46.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。47.图1是根据本公开第一实施例的示意图;如图1所示,本实施例提供一种文件的上传处理方法,可以应用于服务器侧,实现对大文件的上传处理,具体可以包括如下步骤:48.s101、在接收客户端上传目标文件的多个数据块的各数据块的过程中,检测并确定当前数据块的数据读取失败;49.s102、确定读取失败的当前数据块的断点位置;50.s103、基于当前数据块的断点位置,获取当前数据块的断点位置之后续传的数据。51.本实施例的文件上传处理方法,适用于对大文件进行上传处理。本实施例的大文件可以指的是文件的大小即存储容量大于预设容量阈值,预设容量阈值可以根据具体的应用场景以及具体需求来设置,例如可以为500m或者1t,或者其他值。52.由于大文件直接上传,受网络环境等的影像,失败率较高。所以,客户端侧可以预设策略将大文件(file)切分成多个数据块(part),以数据块为粒度上传。每个数据块的上传可以设置有上传重试策略。即若某个数据块上传失败,可以重新进行上传。例如预设策略可以要求将大文件均匀切分成多个数据块。或者,可以以设定的容量阈值为切分单元,按照从前之后的顺序,将大文件切分成多个数据块,剩余最后一个数据块的大小可以小于设定的容量阈值。当然可选地,也可以根据实际场景,将大文件进行不均匀切分,得到多个不同的数据块。无论采用哪种策略,都可以将数据块的信息记录下来,存储在文件的元信息表中,方便上传时使用。例如在文件的元信息表中,可以设置有part列表,里面包括每个数据块part的顺序标识number、以及part的大小等信息。53.但是随着用户需求的不断变化,出现越来越多的存储容量更大的文件,例如可以称为超大文件。而且为了便于管理,切分的数据块数量又不能过多,将超大文件拆分成多个数据块之后,每个数据块的大小仍然非常大。据线上统计,即使设置失败重传策略,超大文件的上传成功率仍然不能达到90%。基于此,提出本公开的文件上的处理方法,以提高文件的上传成功率。54.对于任意一个无论存储容量多大的目标文件,本实施例中,在客户端侧,仍然将每个文件切分成多个数据块进行传输。具体地,在服务器侧,在接收客户端上传目标文件的多个数据块的各数据块的过程中,若检测并确定当前数据块的数据读取失败时,需要确定读取失败的当前数据块的断点位置,进而基于当前数据块的断点位置,获取当前数据块的断点位置之后续传的数据。也就是说,在本实施例的技术方案中,在目标文件的每个数据块的上传中,可以支持断点续传,进而可以有效地提高存储容量较大的数据块的上传成功率,进而可以有效地提高文件的上传成功率。55.本实施例的文件的上传处理方法,通过采用上述技术方案,能够在文件中的任一数据块上传过程中,上传失败时,支持断点续传,避免数据块的重传,能够有效地提高数据块的上传成功率,进而可以有效地提高文件的上传成功率。56.图2是根据本公开第二实施例的示意图;本实施例提供一种文件的上传处理方法,在上述图1所示实施例的技术方案的基础上,进一步更加详细地描述本公开的技术方案。如图2所示,本实施例的文件的上传处理方法,具体可以包括如下步骤:57.s201、在接收客户端上传目标文件的多个数据块的各数据块的过程中,检测是否读取正常;若是,执行步骤s202;若读取失败,执行步骤s203;58.s202、将读取到的当前数据块的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统;返回步骤s201继续检测后续读取过程,直至当前数据块的数据存储完毕,结束。59.s203、将读取到的当前数据块的、数据量未到达预设分片的所述预设存储容量的数据,存储至缓存中;执行步骤s204;60.在目标文件较大时,目标文件的多个数据块也较大,所以在目标文件的每个数据块上传过程中,客户端侧按照从前至后的顺序,采用流式读取的方式,边读取边向服务端上传目标文件的数据块中的数据。对应地,在服务器侧,服务器也采用流式读取的方式,边读取边存储目标文件的数据块中的数据。61.具体地,服务器在各数据块的读取过程中,可以检测已经接收到的当前数据块的数据的存储容量是否达到预先获取到的当前数据块的总存储容量,以确定当前数据块的数据是否上传完毕。若已经接收到的当前数据块的数据的存储容量达到当前数据块的总存储容量,则确定当前数据块上传完毕;否则,确定当前数据块未上传完毕。然后,检测是否能够读取到客户端上传的当前数据块的数据,若能够读取到,则表示读取正常。若当前数据块的数据未上传完毕,但是读取不到当前数据块的数据,表示读取失败。62.本实施例中,读取成功时,可以在流式读取的过程中,检测读取到的当前数据块的数据的存储容量,是否达到预设分片的预设存储容量;若达到,以预设分片的预设存储容量为存储粒度,将读取到的当前数据块的数据,存储至存储系统。按照类似方式,可以将当前数据块的所有数据,按照预设分片的预设存储容量为存储粒度,存储至存储系统中。本实施例的存储系统可以为键-值(key-value;kv)存储系统。63.在本实施例中,在当前数据块的读取过程中,由于不是实时存储,而是按照预设分片的预设存储容量为存储粒度进行存储,所以,在读取失败时,会存在已读取到的、但是数据量未到达预设分片的预设存储容量的数据,还未存储至存储系统中,此时可以先将这部分数据存储至缓存中。64.s204、确定读取失败的当前数据块的断点位置;65.具体地,根据已经读取到的当前数据块的数据,可以确定当前数据块的断点位置。例如在读取某个数据块的过程,按照预设分片的预设存储容量为存储粒度,存储了3次。预设分片的预设存储容量为50m,缓存中存储的当前数据块的数据的存储容量为6m,则可以确定当前数据块的断点位置可以为156m位置处。66.s205、基于当前数据块的断点位置,计算当前数据块的第一指纹;67.具体地,可以基于当前数据块的断点位置,获取当前数据块的断点位置之前的所有数据,然后采用加密算法生成当前数据块的第一指纹。本实施例中,具体可以采用消息摘要算法5(message-digestalgorithm5;md5)、安全哈希算法1(securehashalgorithm1;sha-1)、或者32位循环冗余检查(cyclicredundancycheck32bit;crc32)算法,根据当前数据块的断点位置之前的所有数据,计算得到当前数据块的第一指纹。进一步地,可以将断点位置和当前数据块的第一指纹,一起存储在缓存中。68.采用该方式,可以非常准确、高效地计算出当前数据库的第一指纹。69.s206、向客户端发送当前数据块的断点位置以及当前数据块的第一指纹;70.本实施例中,向客户端发送的当前数据块的断点位置以及当前数据块的第一指纹,目的是供客户端基于本地的当前数据块的断点位置,计算当前数据块的第二指纹;并基于当前数据块的第一指纹与当前数据块的第二指纹,确定续传当前数据块的断点位置之后的数据。71.本实施例的发送可以基于客户端的请求发送的,或者也可以是服务器在检测到读取失败后主动发送的。具体地,在客户端一侧,也检测文件上传是否失败,若失败,则可以向服务器请求断点信息请求。对应地,服务器接收到该请求,从缓存中获取断点位置以及对应的第一指纹,并返回给客户端。本实施例的断点位置也可以称为offset。72.具体地,客户端可以基于本地的当前数据块的断点位置,获取当前数据块的断点位置之前的所有数据,按照md5、sha-1、或者crc32算法计算当前数据块的第二指纹。与上述当前数据块的第一指纹的计算方式相同。然后检测当前数据块的第一指纹与当前数据块的第二指纹是否一致;若一致,确定服务器侧已接收的当前数据块的数据都非常准确,客户端侧可以续传当前数据块的数据;否则,若不一致,确定服务器侧已接收的当前数据块的数据不正确,需要客户端侧重新上传当前数据块的数据。73.采用该方式,可以由客户端侧通过检测当前数据块的第一指纹与当前数据块的第二指纹是否一致,来验证服务器侧接收的数据的准确性,进而可以进一步有效地确保上传的数据块的数据的准确性。74.s207、若客户端确定续传当前数据块的数据时,接收客户端发送的续传数据请求,该续传数据请求中携带当前数据块的顺序标识、续传标识以及当前数据块中断点位置之后的数据;75.s208、从缓存中获取当前数据块的、断点位置之前未存储至存储系统的数据;76.s209、读取当前数据块中断点位置之后的数据;77.s210、将当前数据块中所有未存储的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统,直至当前数据块存储完毕。78.具体地,为了保留当前数据块中所有数据的顺序,所以,先从缓存中获取当前数据块的、断点位置之前未存储至存储系统的数据,然后在这部分数据之后,读取断点位置之后续传的数据。并一起按照预设分片的预设存储容量的存储粒度进行存储。也就是说,在服务器侧的存储系统中存储数据块的数据时,始终是按照预设分片为粒度来存储。服务器的底层可以使用分布式kv存储系统存储文件数据,每个kv数据块对应就是一次存储的预设分片粒度的数据。79.需要说明的是,在步骤s209的读取过程中,还可以返回步骤s201,执行读取检测,并按照上述步骤的技术方案,在读取失败后,再次执行续传,直至当前数据块存储完毕,确定当前数据块上传成功。80.可选地,步骤s207中的续传请求中还可以携带当前数据块的第二指纹;此时对应地,在步骤s207之后,步骤s209之前,还可以包括:基于当前数据块的第二指纹和当前数据块的第一指纹,确定继续读取并存储当前数据块的数据。81.具体实现时,可以检测当前数据块的第二指纹和当前数据块的第一指纹是否一致,若一致,确定可以继续读取并存储当前数据块的数据。否则若不一致,此时可以认为存储文件上传错误,此时,服务器可以向客户端返回上传错误的响应消息,以供客户端重新上传当前数据块的数据。82.通过采用该方式,可以进一步确保当前数据块上传的准确性。83.本实施例的文件的上传处理方法,通过采用上述方案,可以支持在上传目标文件的任一数据块的过程中,出现上传失败后的断点续传,避免出现上传失败后重新上传数据块,进而可以有效地提高目标文件的上传成功率。84.进一步地,本实施例中,通过将读取到的当前数据块的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统,能够有效地缩小存储粒度,方便在读取失败时,高效、准确地定位断点位置。85.进一步地,本实施例中,还可以在读取失败时,将读取到的当前数据块的、数据量未到达预设分片的预设存储容量的数据,存储至缓存中,能够高效、准确地保存未存储的数据,避免数据丢失,进而可以有效地确保接收的数据块的数据的准确性与完整性。86.进一步地,,本实施例中,服务器还可以在断点续传开始时,基于客户端的续传数据请求中的当前数据块的第二指纹信息,对服务器端的当前数据块的第一指纹进行校验,并在校验通过后,再进行断点续传,能够可以有效地确保上传的数据块的准确性,进而可以有效地提高文件上传的成功率。87.图3是根据本公开第三实施例的示意图;如图3所示,本实施例提供一种文件的上传处理方法,可以应用于客户端侧,实现对大文件的上传处理,具体可以包括如下步骤:88.s301、在向服务器上传目标文件的多个数据块中各数据块的过程中,若检测并确定当前数据块上传失败;89.s302、获取上传失败时当前数据块的断点位置;90.s303、基于当前数据块的断点位置,对当前数据块的数据进行续传。91.与上述图1所示实施例的区别在于:上述图1所示实施例在服务器侧描述本公开的技术方案,而本实施例在客户端侧描述本公开的技术方案。92.具体地,在客户端侧,上传目标文件的每个数据块时,为了方便存储容量较大的数据块的上传,采用流式读取的方式,边读取边上传。而且,在上传过程中,客户端可以检测当前数据块是否上传失败。例如,若预设时间周期内未接收到服务器返回的响应,则认为上传失败。然后可以通过与服务器交互,获取上传失败对应的当前数据块的断点位置,进而可以基于该断点位置,对当前数据块进行续传。93.本实施例的文件的上传处理方法,通过采用上述技术方案,能够在文件中的任一数据块上传过程中,上传失败时,支持断点续传,避免数据块的重传,能够有效地提高数据块的上传成功率,进而可以有效地提高文件的上传成功率。94.图4是根据本公开第四实施例的示意图;本实施例提供一种文件的上传处理方法,在上述图3所示实施例的技术方案的基础上,进一步更加详细地描述本公开的技术方案。如图4所示,本实施例的文件的上传处理方法,具体可以包括如下步骤:95.s401、在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;96.s402、向服务器发送断点信息请求;97.s403、接收服务器返回的、上传失败时当前数据块的断点位置以及当前数据块的第一指纹;98.具体地,参考上述图2所示实施例的记载,服务器可以从缓存中获取预先存储的当前数据块的断点位置以及当前数据块的第一指纹,并返回给服务器。由于服务器为数据块接收方,相对于客户端侧预测当前数据块的断点位置而言,从服务器侧获取的当前数据块的断点位置非常准确。99.s404、基于当前数据块的断点位置和当前数据块的第一指纹,确定当前数据块的数据处理方式为,对当前数据块的数据进行续传;100.例如,该步骤s404具体实现时,可以包括如下步骤:101.(1)基于当前数据块的断点位置和本地存储的当前数据块的数据,获取当前数据块的断点位置之前的数据;102.(2)基于当前数据块的断点位置之前的数据,计算当前数据块的第二指纹;103.具体可以参考上述实施例中的当前数据块的第一指纹的计算方式,计算当前数据块的第二指纹,在此不再赘述。104.(3)检测第一指纹和第二指纹是否相同;若相同;执行步骤(4);否则,若不同,执行步骤(5);105.(4)确定当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。106.(5)确定客户端侧上传的当前数据块的断点位置之前的数据与服务器侧接收到的当前数据块的断点位置之前的数据不一致,进而可以确定当前数据块上传失败,进而可以确定当前数据块的数据处理方式为,对当前数据块的数据进行重传,可以有效地确保上传的数据块的数据的准确性。107.由于第一指纹和第二指纹都是基于当前数据块的断点位置之前的数据,采用加密算法计算的。第一指纹为服务器基于服务器侧的接收到的当前数据块的断点位置之前的数据计算的,而第二指纹为客户端基于客户端本地存储的当前数据块的断点位置之前的数据计算的。108.s405、向服务器发送续传数据请求,该续传数据请求中携带当前数据块的顺序标识、续传标识以及当前数据块中断点位置之后的数据。109.可选地,在步骤s405的续传数据请求中也可以携带当前数据块的第二指纹,以供服务器根据当前数据块的第二指纹和当前数据块的第一指纹,再次验证接收的当前数据块的数据是否正确。若正确,再进一步接收续传的数据,进一步提高了上传的数据块的准确性。110.本实施例的文件的上传处理方法,通过采用上述方案,可以支持在上传目标文件的任一数据块的过程中,出现上传失败后的断点续传,避免出现上传失败后重新上传数据块,进而可以有效地提高目标文件的上传成功率。111.进一步地,本实施例中,客户端还可以基于本地计算的当前数据块的第二指纹,检测服务器的第一指纹是否正确,若正确,确定进行断点续传,否则,确定对当前数据块进行重传,可以有效地确保上传的数据块的准确性,进而可以有效地提高文件的上传成功率。112.图5是根据本公开第五实施例的示意图;本实施例提供一种文件的上传处理方法,在上述图1-图4所示实施例的技术方案的基础山上,进一步更加详细地介绍本公开的技术方案。如图5所示,本实施例的文件的上传处理方法,具体可以包括如下步骤:113.s501、客户端按照预设策略将待上传的目标文件切分成多个数据块;并为每个数据块配置顺序标识,并在文件元信息中记录数据块的信息;114.本实施例中,通过将目标文件file切分成多个数据块part,以通过不同的超文本传输协议(hypertexttransferprotocol;http)请求的交互,实现目标文件file的上传。115.文件元信息中,可以包括有目标文件的大小、目标文件切分的数据块的数量,每个数据块的顺序标识如可以采用partnumber表示,以及每个数据块part的大小等等。每个数据块的partnumber能够标识该数据块在目标文件中的位置。116.s502、客户端与服务器交互,向服务器发送待上传的目标文件的文件元信息;117.s503、客户端获取一个待上传的数据块,作为当前数据块;118.通常情况下,可以按照各数据块在目标文件中从前至后的顺序,依次对各数据块进行上传。119.s504、客户端流式读取当前数据块的数据,向服务器上传;120.本实施例中,客户端基于http请求的方式,向服务器上传当前数据块的数据。121.s505、服务器按照从前至后的顺序,读取当前数据块的数据;并检测读取是否正常;若读取正常成功,每读取到预设分片的预设存储容量的数据时,将数据以预设分片的预设存储容量为存储粒度,存储至存储系统;122.另外,可选地,也可以在每读取到预设分片的预设存储容量的数据时,基于接收到的当前数据块的所有数据,计算当前数据块的指纹。由于当前数据块的数据还在一直读取,所以该当前数据块的指纹为一个中间态的计算量,直至当前数据块读取完毕,当前数据块的指纹固定,可以将当前数据块的指纹存储在缓存中。当前数据库的指纹可以存储在缓存中,以便于在传输过程中,可以实时对当前数据块接收到的数据进行校验。123.s506、若出现读取失败,服务器将读取到的当前数据块的、数据量未到达预设分片的预设存储容量的数据,存储至缓存中;124.s507、服务器确定读取失败的当前数据块的断点位置;基于当前数据块的断点位置,计算当前数据块的第一指纹;并将当前数据块的断点位置和当前数据块的第一指纹存储至缓存中;125.s508、客户端检测到读取失败时,向服务器发送断点信息请求;126.s509、服务器从缓存中获取当前数据块的断点位置和当前数据块的第一指纹,并向客户端发送;127.s510、客户端基于当前数据块的断点位置,计算当前数据块的第二指纹;128.具体地,参考上述相关实施例的记载,客户端基于当前数据块的断点位置,从本地存储的当前数据块的数据中,获取当前数据块的断点位置之前的数据;然后基于当前数据块的断点位置之前的数据,计算当前数据块的第二指纹。129.s511、客户端检测第一指纹和第二指纹是否相同;若相同,确定对当前数据块的数据进行续传;否则,确定对当前数据块的数据进行重传;130.s512、客户端向服务器发送续传数据请求,该续传数据请求中携带当前数据块的顺序标识、续传标识、当前数据块的第二指纹以及所述当前数据块中断点位置之后的数据;131.例如,可以在请求的头部信息中携带一个标识,以表示是续传还是重传,以便于服务器做好相应的处理。132.需要说明的是,若需要重传时,客户端向服务器发送重传数据请求,携带当前数据块的顺序标识、重传标识。并按照步骤503的方式,开始重新读取当前数据块的数据,重新上传。对应地,在服务器侧,若收到的是重传请求,此时,需要将存储系统以及缓存中之前存储的当前数据块的数据都失效。133.或者可选地,也可以不携带续传标识或者重传标识。由于重传时,从头开始读取当前数据块的数据,还没有相应的第二指纹信息,所以,若是重传时,不存在对应的第二指纹信息,也不用传输给服务器。若请求中携带当前数据块的第二指纹,则可以认为是续传当前数据块的数据;否则认为是重传当前数据块的数据。134.s513、服务器接收到续传数据请求,确定是续传当前数据块的数据;检测续传数据请求中的当前数据块的第二指纹与当前数据块的第一指纹是否相同;135.s514、若相同,服务器从缓存中获取当前数据块的、断点位置之前未存储至存储系统的数据;然后开始读取当前数据块中断点位置之后的数据;136.实际应用中,若不同,服务器向客户端返回当前数据块上传错误的响应,以供客户端重传当前数据块。137.s515、服务器从将读取到的当前数据块中所有未存储的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统,直至当前数据块存储完毕,向客户端返回当前数据块存储完毕的响应消息;138.具体地,服务器在存储过程中,在读取不到数据时,服务器可以根据文件元信息中当前数据块的大小,以及已经接收到的当前数据块的数据的大小,确定当前数据块是否存储完毕。若存储完毕,向客户端返回当前数据块存储完毕的响应消息;否则认为读取失败,返回上述步骤s505进行处理。139.可选地,在向客户端返回当前数据块存储完毕的响应消息时,可以携带当前数据块的第二指纹。对应地,客户端可以根据本地的当前数据块的第一指纹,检测第二指纹是否正确。若正确,确定当前数据块上传完毕。此时,可以客户端可以返回步骤s502,选择上传下一块数据块,直至所有数据块上传完毕。140.s516、服务器接收到目标文件的所有数据块之后,按照各数据块的顺序标识,将所有数据块拼接,得到目标文件。141.本实施例的客户端与服务器之间的所有请求与响应都是采用http来实现。142.图6是本公开提供的文件、数据块以及预设分片的关系示意图。如图6所示,按照本实施例的方式,一个完整的文件file,在客户端可以按照多块上传(multipartupload)的思想,将文件分成多个数据块part。也就是说,一个文件file由大于或者等于1的数据块part组成。在服务器侧存储时,按照分片(slice)来存储,每个slice为一个预设分片,具有预设存储容量。预设存储容量为固定的大小,例如可以为4mb、8mb、16mb等,但是肯定不会比part的存储容量更大。也就是说,一个数据块part可以由大于或者等于1的各slice组成。通过在服务器侧设置更小的存储粒度,能够更加方便地对数据块的存储更有效地监控,方便在读取失败时,及时、准确地定位断点位置。143.本实施例的文件的上传处理方法,通过采用上述方案,可以实现大文件分块上传,而且文件存储的粒度可以从数据块part细化到字节byte级别,保证part上传失败的时候,每一次重传都能向服务器传送更多的数据,有利于提升part的上传成功率。而且byte级别的断点续传,可以有效减少失败重传的数据量,节约带宽的同时,大大减少失败重传的耗时,有效地提高文件上传的成功率。144.图7是根据本公开第六施例的示意图;如图7所示,本实施例提供一种服务器700,包括:145.检测模块701,用于在接收客户端上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块的数据读取失败;146.确定模块702,用于确定读取失败的所述当前数据块的断点位置;147.获取模块703,用于基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。148.本实施例的服务器700,通过采用上述模块实现文件的上传处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。149.图8是根据本公开第七施例的示意图;如图8所示,本实施例提供一种服务器800,包括上述图7同名同功能的模块:检测模块801、确定模块802以及获取模块803。150.进一步地,如图8所示,本实施例的服务器800中,还包括:151.存储模块804,用于在接收客户端上传目标文件的多个数据块中各数据块的过程中,将读取到的所述当前数据块的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统;152.存储模块804,还用于若检测并确定当前数据块的数据读取失败之后,将读取到的所述当前数据块的、数据量未到达所述预设分片的所述预设存储容量的数据,存储至缓存中。153.进一步地,如图8所示,本公开的一个实施例的服务器800中,还包括:154.计算模块805,用于基于所述当前数据块的断点位置,计算所述当前数据块的第一指纹。155.进一步地,如图8所示,本公开的一个实施例的服务器800中,还包括:156.发送模块806,用于向所述客户端发送所述当前数据块的断点位置以及所述当前数据块的第一指纹,以供所述客户端基于本地的所述当前数据块的断点位置,计算所述当前数据块的第二指纹;并基于所述当前数据块的第一指纹与所述当前数据块的第二指纹,确定是否续传所述当前数据块的所述断点位置之后的数据。157.进一步可选地,本公开的一个实施例中,获取模块803,用于:158.接收所述客户端发送的续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据;159.从所述缓存中获取所述当前数据块的、所述断点位置之前未存储至所述存储系统的数据;160.读取所述当前数据块中所述断点位置之后的数据;161.将所述当前数据块中所有未存储的数据,以所述预设分片的所述预设存储容量为存储粒度,存储至所述存储系统。162.进一步可选地,本公开的一个实施例中,确定模块802,还用于:163.基于所述当前数据块的第二指纹和所述当前数据块的第一指纹,确定继续读取并存储所述当前数据块的数据。164.本实施例的服务器800,通过采用上述模块实现文件的上传处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。165.图9是根据本公开第八施例的示意图;如图9所示,本实施例提供一种客户端设备900,包括:166.检测模块901,用于在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;167.获取模块902,用于获取上传失败对应的所述当前数据块的断点位置;168.传输模块903,用于基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传。169.本实施例的客户端设备900,通过采用上述模块实现文件的上传处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。170.图10是根据本公开第九施例的示意图;如图10所示,本实施例提供一种客户端设备1000,包括上述图9同名同功能的模块:检测模块1001、获取模块1002以及传输模块1003。171.进一步地,在本实施例的客户端设备1000中,获取模块1002,用于:172.从所述服务器获取上传失败时、所述当前数据块的断点位置。173.进一步可选地,在本公开的一个实施例中,获取模块1002,用于:174.从所述服务器获取上传失败时、所述当前数据块的第一指纹,所述当前数据块的第一指纹为所述服务器基于所述当前数据块的断点位置计算的。175.如图10所示,在本公开的一个实施例中,客户端设备1000还包括:176.确定模块1004,用于基于所述当前数据块的断点位置和所述当前数据块的第一指纹,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。177.进一步可选地,在本公开的一个实施例中,确定模块1004,用于:178.基于所述当前数据块的断点位置和本地存储的所述当前数据块的数据,获取所述当前数据块的断点位置之前的数据;179.基于所述当前数据块的断点位置之前的数据,计算所述当前数据块的第二指纹;180.检测并确定所述第一指纹和所述第二指纹相同;181.确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。182.进一步可选地,在本公开的一个实施例中,传输模块1003,用于:183.向所述服务器发送续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据。184.进一步可选地,在本公开的一个实施例中,确定模块1004,还用于:185.若所述第一指纹和所述第二指纹不同,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行重传。186.本实施例的客户端设备1000,通过采用上述模块实现文件的上传处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。187.图11是根据本公开第十施例的示意图;如图11所示,本实施例还提供一种文件的上传处理系统1100,包括客户端设备1101和服务器1102,客户端设备1101和服务器1102通信连接,实现向服务器1102上传目标文件的多个数据块中各数据块;本实施例的服务器1102可以采用如上图7或者图8所示实施例的服务器,客户端设备1101可以采用如上图9或者图10所示实施例的客户端设备,具体可以采用如上图1-图5所示实施例的文件的上传处理方法,实现文件的上传处理。188.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。189.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。190.图12示出了可以用来实施本公开的实施例的示例电子设备1200的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。191.如图12所示,设备1200包括计算单元1201,其可以根据存储在只读存储器(rom)1202中的计算机程序或者从存储单元1208加载到随机访问存储器(ram)1203中的计算机程序,来执行各种适当的动作和处理。在ram1203中,还可存储设备1200操作所需的各种程序和数据。计算单元1201、rom1202以及ram1203通过总线1204彼此相连。输入/输出(i/o)接口1205也连接至总线1204。192.设备1200中的多个部件连接至i/o接口1205,包括:输入单元1206,例如键盘、鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。193.计算单元1201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1201的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1201执行上文所描述的各个方法和处理,例如本公开的上述方法。例如,在一些实施例中,本公开的上述方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元12012。在一些实施例中,计算机程序的部分或者全部可以经由rom1202和/或通信单元1209而被载入和/或安装到设备1200上。当计算机程序加载到ram1203并由计算单元1201执行时,可以执行上文描述的本公开的上述方法的一个或多个步骤。备选地,在其他实施例中,计算单元1201可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开的上述方法。194.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。195.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。196.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。197.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。198.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。199.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。200.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。201.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种文件的上传处理方法,包括:在接收客户端上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块的数据读取失败;确定读取失败的所述当前数据块的断点位置;基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。2.根据权利要求1所述的方法,其中,在接收客户端上传目标文件的多个数据块中各数据块的过程中,所述方法包括:将读取到的所述当前数据块的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统;若检测并确定当前数据块的数据读取失败之后,所述方法还包括:将读取到的所述当前数据块的、数据量未到达所述预设分片的所述预设存储容量的数据,存储至缓存中。3.根据权利要求2所述的方法,其中,确定读取失败的所述当前数据块的断点位置之后,所述方法还包括:基于所述当前数据块的断点位置,计算所述当前数据块的第一指纹。4.根据权利要求3所述的方法,其中,基于所述当前数据块的断点位置,计算所述当前数据块的第一指纹之后,所述方法还包括:向所述客户端发送所述当前数据块的断点位置以及所述当前数据块的第一指纹,以供所述客户端基于本地的所述当前数据块的断点位置,计算所述当前数据块的第二指纹;并基于所述当前数据块的第一指纹与所述当前数据块的第二指纹,确定是否续传所述当前数据块的所述断点位置之后的数据。5.根据权利要求3或4所述的方法,其中,基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据,包括:接收所述客户端发送的续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据;从所述缓存中获取所述当前数据块的、所述断点位置之前未存储至所述存储系统的数据;读取所述当前数据块中所述断点位置之后的数据;将所述当前数据块中所有未存储的数据,以所述预设分片的所述预设存储容量为存储粒度,存储至所述存储系统。6.根据权利要求5所述的方法,其中,所述续传请求中还携带所述当前数据块的第二指纹;从所述缓存中获取所述当前数据块的、所述断点位置之前未存储至所述存储系统的数据之前,所述方法还包括:基于所述当前数据块的第二指纹和所述当前数据块的第一指纹,确定继续读取并存储所述当前数据块的数据。7.一种文件的上传处理方法,包括:在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;获取上传失败对应的所述当前数据块的断点位置;
基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传。8.根据权利要求7所述的方法,其中,获取上传失败时所述当前数据块的断点位置,包括:从所述服务器获取上传失败时、所述当前数据块的断点位置。9.根据权利要求8所述的方法,其中,所述方法还包括:从所述服务器获取上传失败时、所述当前数据块的第一指纹,所述当前数据块的第一指纹为所述服务器基于所述当前数据块的断点位置计算的。其中,基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传之前,所述方法还包括:基于所述当前数据块的断点位置和所述当前数据块的第一指纹,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。10.根据权利要求9所述的方法,其中,基于所述当前数据块的断点位置和所述当前数据块的第一指纹,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传,包括:基于所述当前数据块的断点位置和本地存储的所述当前数据块的数据,获取所述当前数据块的断点位置之前的数据;基于所述当前数据块的断点位置之前的数据,计算所述当前数据块的第二指纹;检测并确定所述第一指纹和所述第二指纹相同;确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。11.根据权利要求10所述的方法,其中,基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传,包括:向所述服务器发送续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据。12.根据权利要求10所述的方法,其中,所述方法还包括:若所述第一指纹和所述第二指纹不同,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行重传。13.一种服务器,包括:检测模块,用于在接收客户端上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块的数据读取失败;确定模块,用于确定读取失败的所述当前数据块的断点位置;获取模块,用于基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。14.根据权利要求13所述的服务器,其中,还包括:存储模块,用于在接收客户端上传目标文件的多个数据块中各数据块的过程中,将读取到的所述当前数据块的数据,以预设分片的预设存储容量为存储粒度,存储至存储系统;所述存储模块,还用于若检测并确定当前数据块的数据读取失败之后,将读取到的所述当前数据块的、数据量未到达所述预设分片的所述预设存储容量的数据,存储至缓存中。15.根据权利要求14所述的服务器,其中,还包括:计算模块,用于基于所述当前数据块的断点位置,计算所述当前数据块的第一指纹。
16.根据权利要求15所述的服务器,其中,还包括:发送模块,用于向所述客户端发送所述当前数据块的断点位置以及所述当前数据块的第一指纹,以供所述客户端基于本地的所述当前数据块的断点位置,计算所述当前数据块的第二指纹;并基于所述当前数据块的第一指纹与所述当前数据块的第二指纹,确定是否续传所述当前数据块的所述断点位置之后的数据。17.根据权利要求15或16所述的服务器,其中,所述获取模块,用于:接收所述客户端发送的续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据;从所述缓存中获取所述当前数据块的、所述断点位置之前未存储至所述存储系统的数据;读取所述当前数据块中所述断点位置之后的数据;将所述当前数据块中所有未存储的数据,以所述预设分片的所述预设存储容量为存储粒度,存储至所述存储系统。18.根据权利要求17所述的服务器,其中,所述确定模块,还用于:基于所述当前数据块的第二指纹和所述当前数据块的第一指纹,确定继续读取并存储所述当前数据块的数据。19.一种客户端设备,包括:检测模块,用于在向服务器上传目标文件的多个数据块中各数据块的过程中,检测并确定当前数据块上传失败;获取模块,用于获取上传失败对应的所述当前数据块的断点位置;传输模块,用于基于所述当前数据块的断点位置,对所述当前数据块的数据进行续传。20.根据权利要求19所述的客户端设备,其中,所述获取模块,用于:从所述服务器获取上传失败时、所述当前数据块的断点位置。21.根据权利要求20所述的客户端设备,其中,所述获取模块,用于:从所述服务器获取上传失败时、所述当前数据块的第一指纹,所述当前数据块的第一指纹为所述服务器基于所述当前数据块的断点位置计算的。所述客户端设备还包括:确定模块,用于基于所述当前数据块的断点位置和所述当前数据块的第一指纹,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。22.根据权利要求21所述的客户端设备,其中,所述确定模块,用于:基于所述当前数据块的断点位置和本地存储的所述当前数据块的数据,获取所述当前数据块的断点位置之前的数据;基于所述当前数据块的断点位置之前的数据,计算所述当前数据块的第二指纹;检测并确定所述第一指纹和所述第二指纹相同;确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行续传。23.根据权利要求22所述的客户端设备,其中,所述传输模块,用于:向所述服务器发送续传数据请求,所述续传数据请求中携带所述当前数据块的顺序标识、续传标识以及所述当前数据块中所述断点位置之后的数据。24.根据权利要求22所述的客户端设备,其中,所述确定模块,还用于:
若所述第一指纹和所述第二指纹不同,确定所述当前数据块的数据处理方式为,对所述当前数据块的数据进行重传。25.一种文件的上传处理系统,包括客户端设备和服务器,所述客户端设备和所述服务器通信连接,实现向所述服务器上传目标文件的多个数据块中各数据块;所述服务器采用如上权利要求13-18任一所述的服务器,所述客户端设备采用如上权利要求19-24任一所述的客户端设备。26.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6或者7-12中任一项所述的方法。27.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6或者7-12中任一项所述的方法。28.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-6或者7-12中任一项所述的方法。
技术总结
本公开提供了一种文件的上传处理方法、装置、系统、电子设备及存储介质,涉及文件传输、以及文件存储等等技术领域。具体实现方案为:在接收客户端上传目标文件的多个数据块中各数据块的过程中,若检测并确定当前数据块的数据读取失败;确定读取失败的所述当前数据块的断点位置;基于所述当前数据块的断点位置,获取所述当前数据块的断点位置之后续传的数据。本公开的技术,能够有效地提高文件上传的成功率。率。率。
技术研发人员:李磊
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.03.17
技术公布日:2023/7/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
