1.本技术涉及通讯数据传输技术领域,文件特别涉及一种文件分片上传方法、分片方法装置、上传车辆及存储介质。装置质流
背景技术:
2.大文件切片上传是车辆储介程互联网数据传输通信中较为常见的场景。当前大文件切片上传至服务器是及存通过spark-md5根据文件切片后的全量内容计算出上传文件唯一标识hash值,在上传文件前发送请求,文件将要上传文件的分片方法全量切片生成的hash值与服务器上已存文件的hash值进行比对,相同hash值的上传文件可确认为同一文件,以实现秒传功能。装置质流
3.若上传文件是车辆储介程一个超大文件,读取文件全量内容计算hash非常耗时,及存且会引起ui阻塞,文件导致页面假死。分片方法目前的上传比较通用的解决方案是通过web worker使得hash计算不卡顿主线程,web worker可使脚本运行在新的线程中,其独立于主线程,可进行大量的计算活动,而不会影响主线程的ui渲染。
4.然而,虽然web worker另开线程计算文件全量hash,并不影响主线程的ui渲染,但是文件越大,计算时间越长,计算文件全量内容的hash会造成等待时间过长,影响用户体验,亟待解决。
技术实现要素:
5.本技术提供一种文件分片上传方法、装置、车辆及存储介质,以解决大文件上传时,通过第三方库计算文件唯一标识哈希值耗时过长,用户体验较差等问题。
6.本技术第一方面实施例提供一种文件分片上传方法,包括以下步骤:读取车辆的待上传文件,并判断所述待上传文件是否满足预设文件分片上传条件;如果不满足所述预设文件分片上传条件,则切分所述待上传文件,得到全量切片文件;以及基于预设抽取规则,对所述全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将所述新的待上传文件传入预设第三方库中,生成所述待上传文件的哈希值,以基于所述哈希值上传所述待上传文件至服务器。
7.可选地,在本技术的一个实施例中,还包括:如果满足所述预设文件分片上传条件,则将所述待上传文件上传至所述服务器。
8.可选地,在本技术的一个实施例中,所述基于所述哈希值上传所述待上传文件,包括:将所述待上传文件信息及所述哈希值上传至所述服务器;基于预设策略判断所述服务器是否存在相同文件,其中,若存在所述相同文件,则返回上传成功信息,否则在所述服务器中新增标识文件夹。
9.可选地,在本技术的一个实施例中,所述待上传文件信息包括所述待上传文件的大小、名称、预设分片大小中的至少一项。
10.本技术第二方面实施例提供一种文件分片上传装置,包括:判断模块,用于读取车辆的待上传文件,并判断所述待上传文件是否满足预设文件分片上传条件;切片模块,用于
如果不满足所述预设文件分片上传条件,则切分所述待上传文件,得到全量切片文件;以及第一上传模块,用于基于预设抽取规则,对所述全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将所述新的待上传文件传入预设第三方库中,生成所述待上传文件的哈希值,以基于所述哈希值上传所述待上传文件至服务器。
11.可选地,在本技术的一个实施例中,还包括:第二上传模块,用于如果满足所述预设文件分片上传条件,则将所述待上传文件上传至所述服务器。
12.可选地,在本技术的一个实施例中,所述上传模块包括:传值单元,用于将所述待上传文件信息及所述哈希值上传至所述服务器;分析单元,用于基于预设策略判断所述服务器是否存在相同文件,其中,若存在所述相同文件,则返回上传成功信息,否则在所述服务器中新增标识文件夹。
13.可选地,在本技术的一个实施例中,所述待上传文件信息包括所述待上传文件的大小、名称、预设分片大小中的至少一项。
14.本技术第三方面实施例提供一种车辆,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的文件分片上传方法。
15.本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现如上的文件分片上传方法。
16.由此,本技术的实施例具有以下有益效果:
17.本技术的实施例可以通过读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件;如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件;基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。本技术按照固定大小对文件进行切片,并从中抽样获取部分切片内容重新合并,进而通过第三方spack md5计算抽样合并的文件内容,生成文件唯一标识哈希值,以按照正常的文件上传流程进行上传,并可依据生成的哈希值实现文件断点上传和秒传功能,从而有效降低了计算量,提升了计算效率,改善了用户的使用体验。由此,解决了大文件上传时,通过第三方库计算文件唯一标识哈希值耗时过长,用户体验较差等问题。
18.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
19.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
20.图1为根据本技术实施例提供的一种文件分片上传方法的流程图;
21.图2为本技术的一个实施例提供的一种文件分片上传方法的执行逻辑示意图;
22.图3为根据本技术实施例的文件分片上传装置的示例图;
23.图4为本技术实施例提供的车辆的结构示意图。
24.其中,10-文件分片上传装置、100-判断模块、200-切片模块、300-第一上传模块、
401-存储器、402-处理器、403-通信接口。
具体实施方式
25.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
26.下面参考附图描述本技术实施例的文件分片上传方法、装置、车辆及存储介质。针对上述背景技术中提到的问题,本技术提供了一种文件分片上传方法,在该方法中,通过读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件;如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件;基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。本技术按照固定大小对文件进行切片,并从中抽样获取部分切片内容重新合并,进而通过第三方spack md5计算抽样合并的文件内容,生成文件唯一标识哈希值,以按照正常的文件上传流程进行上传,并可依据生成的哈希值实现文件断点上传和秒传功能,从而有效降低了计算量,提升了计算效率,改善了用户的使用体验。由此,解决了大文件上传时,通过第三方库计算文件唯一标识哈希值耗时过长,用户体验较差等问题。
27.具体而言,图1为本技术实施例所提供的一种文件分片上传方法的流程图。
28.如图1所示,该文件分片上传方法包括以下步骤:
29.在步骤s101中,读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件。
30.在本技术的实施例中,用户通过语音指令或手动控制车机等方式上传某一文件时,车辆可首先读取该文件,以获取该文件的大小,进而判断该文件是否满足文件分片上传条件,即待上传文件的大小是否大于文件阈值,例如,当车辆读取某一文件为11mb,大于文件阈值10mb时,则判断该文件属于大文件,满足上述文件分片上传条件,以通过大文件上传方式上传该文件。
31.由此,通过判断待上传文件是否满足文件分片上传条件,从而为后续文件的切分与上传方式的选择提供可靠的依据和指导。
32.可选地,在本技术的一个实施例中,还包括:如果满足预设文件分片上传条件,则将待上传文件上传至服务器。
33.需要说明的是,当待上传文件不满足上述件分片上传条件,即该文件并不属于大文件时,本技术的实施例则可通过常规文件上传方式,直接上传至服务器,从而提高文件上传的效率。
34.在步骤s102中,如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件。
35.当车辆读取的文件满足上述文件上传条件,即待上传文件属于大文件类型时,本技术的实施例可将待上传文件基于固定大小切分成全量切片文件,从而为后续大文件的高效上传提供可靠的依据和数据支撑。
36.在步骤s103中,基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到
的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。
37.在对待上传文件基于固定大小切分为全量切片文件后,进一步地,本技术的实施例还可基于预先设置的抽取规则,对全量切片进行抽样截取,例如,抽取全量切片的第一个和最后一个,以及其他切片截取首中尾各3个字节的片段。
38.可以理解的是,在本技术的实施例中,技术人员可对上述的抽取规则进行自定义设置,从而在保证抽样尽量均匀的情况下,有效提升了文件对比的准确度。
39.进而,本技术的实施例可将上述抽取的切片按照一定的顺序合并为新的文件内容,并传入第三方库spark-md5中,以生成待上传文件的唯一表示哈希值,并基于哈希值上传待上传文件至服务器,如图2所示。因此,抽样合成的文件内容远小于原文件,从而极大降低了生成哈希值的计算量,提高了计算效率。
40.可选地,在本技术的一个实施例中,基于哈希值上传待上传文件,包括:将待上传文件信息及哈希值上传至服务器;基于预设策略判断服务器是否存在相同文件,其中,若存在相同文件,则返回上传成功信息,否则在服务器中新增标识文件夹。
41.在生成待上传文件的哈希值后,本技术的实施例可发送http网络请求,进而将待上传文件信息以及生成的待上传文件的哈希值通过网络请求上传至服务器,并可根据哈希值实现断点续传和秒传功能,完成整个文件的上传功能。
42.可选地,在本技术的一个实施例中,待上传文件信息包括待上传文件的大小、名称、预设分片大小中的至少一项。
43.需要说明的是,在本技术的实施例中,上述待上传文件信息包括待上传文件的大小、名称、预设分片大小等。
44.由此,本技术的实施例通过获取相应的待上传文件的信息,以实现待上传文件的切分和上传等操作,有效保证了文件上传的成功率和效率。
45.具体地,在服务器接收到待上传的文件的信息和哈希值后,本技术的实施例便可通过服务器查询待上传文件的哈希值是否已经存在,若存在,则对比待上传文件和服务器上相同哈希值文件的大小,若哈希值与文件大小均相同,则可判定其为同一文件,直接返回用户端“文件上传成功”信息,从而实现秒传功能。
46.若未查询到服务器中有相同的文件时,则记录上述http网络请求信息,并在文件服务器中新增标识文件夹;每个切片文件发送一次请求将切片信息发送给服务器,此时需降低浏览器同时发送请求的个数,以避免造成浏览器网络请求拥堵,导致请求失败。
47.进而,本技术的实施例可将上传的切片文件添加到服务器中带有标识的文件夹内,当用户端上传全部切片信息成功后,便向服务器发送合并切片文件的请求。
48.在接收到用户端的合并请求后,便可将服务器中对应标识文件夹下的切片合并为待上传文件,并向用户端返回“文件上传成功”信息提醒,从而在保证文件成功上传的前提下,有效降低了计算内容,减小了计算消耗,缩短了计算时间,极大提升了文件上传的效率。
49.根据本技术实施例提出的文件分片上传方法,通过读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件;如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件;基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预
设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。本技术按照固定大小对文件进行切片,并从中抽样获取部分切片内容重新合并,进而通过第三方spack md5计算抽样合并的文件内容,生成文件唯一标识哈希值,以按照正常的文件上传流程进行上传,并可依据生成的哈希值实现文件断点上传和秒传功能,从而有效降低了计算量,提升了计算效率,改善了用户的使用体验。
50.其次参照附图描述根据本技术实施例提出的文件分片上传装置。
51.图3是本技术实施例的文件分片上传装置的方框示意图。
52.如图3所示,该文件分片上传装置10包括:判断模块100、切片模块200以及第一上传模块300。
53.其中,判断模块100,用于读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件。
54.切片模块200,用于如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件。
55.第一上传模块300,用于基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。
56.可选地,在本技术的一个实施例中,本技术实施例的文件分片上传装置10还包括:第二上传模块,用于如果满足预设文件分片上传条件,则将待上传文件上传至服务器。
57.可选地,在本技术的一个实施例中,上传模块300包括:传值单元和分析单元。
58.其中,传值单元,用于将待上传文件信息及哈希值上传至服务器。
59.分析单元,用于基于预设策略判断服务器是否存在相同文件,其中,若存在相同文件,则返回上传成功信息,否则在服务器中新增标识文件夹。
60.可选地,在本技术的一个实施例中,待上传文件信息包括待上传文件的大小、名称、预设分片大小中的至少一项。
61.需要说明的是,前述对文件分片上传方法实施例的解释说明也适用于该实施例的文件分片上传装置,此处不再赘述。
62.根据本技术实施例提出的文件分片上传装置,通过读取车辆的待上传文件,并判断待上传文件是否满足预设文件分片上传条件;如果不满足预设文件分片上传条件,则切分待上传文件,得到全量切片文件;基于预设抽取规则,对全量切片文件进行抽样截取,并将抽取得到的多个切片按照预设顺序合并成新的待上传文件,并将新的待上传文件传入预设第三方库中,生成待上传文件的哈希值,以基于哈希值上传待上传文件至服务器。本技术按照固定大小对文件进行切片,并从中抽样获取部分切片内容重新合并,进而通过第三方spack md5计算抽样合并的文件内容,生成文件唯一标识哈希值,以按照正常的文件上传流程进行上传,并可依据生成的哈希值实现文件断点上传和秒传功能,从而有效降低了计算量,提升了计算效率,改善了用户的使用体验。
63.图4为本技术实施例提供的车辆的结构示意图。该车辆可以包括:
64.存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。
65.处理器402执行程序时实现上述实施例中提供的文件分片上传方法。
66.进一步地,车辆还包括:
67.通信接口403,用于存储器401和处理器402之间的通信。
68.存储器401,用于存放可在处理器402上运行的计算机程序。
69.存储器401可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
70.如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
71.可选地,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。
72.处理器402可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
73.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的文件分片上传方法。
74.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
75.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
76.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
77.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传
输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或n个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
78.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
79.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
80.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
81.上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。