掌桥专利:专业的专利平台
掌桥专利
首页

数据文件的上传方法、装置、设备及计算机可读存储介质

文献发布时间:2024-04-18 19:58:26


数据文件的上传方法、装置、设备及计算机可读存储介质

技术领域

本申请属于数据文件传输领域,尤其涉及一种数据文件的上传方法、装置、电子设备及计算机可读存储介质。

背景技术

分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传。

为了实现文件的上传,现有技术,往往采用s3协议中的分片上传,具体实现方式为:将一个大文件进行上传时,将文件进行分片切割,分成多个小数据块进行上传,避免请求超时和内存溢出。

然而,在文件进行分片上传时,如果发生网络波动,从而导致网络传输中断时,会使一部分分片上传到服务器,另外一部分文件遗留在客户端中,进而导致上传到服务器中的分片不完整,无法以文件的方式展示,占用一定的储存空间。

因此,如何降低储存空间的占用率是本领域技术人员亟需解决的技术问题。

发明内容

本申请实施例提供一种数据文件的上传方法、装置、电子设备及计算机可读存储介质,能够有效地降低储存空间的占用率。

第一方面,本申请实施例提供一种数据文件的上传方法,方法包括:

在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录;

在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值;

将待传输数据文件进行切片,生成多个待传输数据块;

计算出多个待传输数据块的散列值以及待传输数据文件的散列值;

判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值;

判断待传输数据文件的散列值与历史上传文件的散列值是否相同;

在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的数据块进行上传。

可选的,将待传输数据文件进行切片,生成多个待传输数据块,包括:

确定待传输数据文件的内存以及历史上传分片的内存;

基于待传输数据文件的内存以及历史上传分片的内存将数据文件进行切分,生成多个待传输数据块。

可选的,在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录,包括:

在获取到待传输数据文件的情况下,获取待传输数据文件的文件名称;

判断客户端中是否存在与待传输数据文件的文件名称相同的文件。

可选的,在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块进行上传,包括:

在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块通过并发线程进行上传。

可选的,方法还包括:

将与历史上传分片的散列值不相同的待传输数据块以及历史上传分片合并为待传输数据文件。

可选的,方法还包括:在多个待传输数据块的散列值不包含历史上传分片的所有散列值和/或待传输数据文件的散列值与历史上传文件的散列值不相同的情况下,将所有待传输数据块进行上传。

第二方面,本申请实施例提供了一种数据文件的上传装置,装置包括:

第一判断模块,用于在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录;第一获取模块,用于在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值;生成模块,用于将待传输数据文件进行切片,生成多个待传输数据块;计算模块,用于计算出多个待传输数据块的散列值以及待传输数据文件的散列值;第二判断模块,用于判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值;第三判断模块,用于判断待传输数据文件的散列值与历史上传文件的散列值是否相同;第一上传模块,用于在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块进行上传。

可选的,生成模块,用于确定数据文件的内存以及历史上传分片的内存;基于数据文件的内存以及历史上传分片的内存将数据文件进行切分,生成多个待传输数据块。

可选的,第一判断模块,用于在获取到待传输数据文件的情况下,获取待传输数据文件的文件名称;判断客户端中是否存在与待传输数据文件的文件名称相同的文件。

可选的,第一上传模块,用于在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块通过并发线程进行上传。

可选的,装置还包括:合并模块,用于将与历史上传分片的散列值不相同的待传输数据块以及历史上传分片合并为待传输数据文件。

可选的,装置还包括:第二上传模块,用于在多个待传输数据块的散列值不包含历史上传分片的所有散列值和/或待传输数据文件的散列值与历史上传文件的散列值不相同的情况下,将所有待传输数据块进行上传。

第三方面,提供了一种电子设备,该电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面所示的数据文件的上传方法的步骤。

第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面所示的数据文件的上传方法的步骤。

本申请实施例提供了一种数据文件的上传方法、装置、电子设备及计算机可读存储介质。该方法包括:在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录;在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值;将待传输数据文件进行切片,生成多个待传输数据块;计算出多个待传输数据块的散列值以及待传输数据文件的散列值;判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值;判断待传输数据文件的散列值与历史上传文件的散列值是否相同;在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的数据块进行上传。本申请能够有效地降低储存空间的占用率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个实施例提供的数据文件的上传方法的流程示意图;

图2是本申请一个实施例提供的数据文件的上传方法的流程示意图;

图3是本申请一个实施例提供的数据文件的上传装置的结构示意图;以及

图4是本申请一个实施例提供的电子设备的结构示意图。

具体实施方式

下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

基于背景技术可知,现有技术在文件进行分片上传时,如果发生网络波动,从而导致网络传输中断时,会使一部分分片上传到服务器,另外一部分文件遗留在客户端中,进而导致上传到服务器中的分片不完整,无法以文件的方式展示,占用一定的储存空间。

为了解决现有技术问题,本申请实施例提供了一种数据文件的上传方法、装置、电子设备及计算机可读存储介质。下面首先对本申请实施例所提供的数据文件的上传方法进行介绍。

图1示出了本申请一个实施例提供的数据文件的上传方法的流程示意图。如图1所示,

步骤S11:在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录。

在一个可选的实施例中,在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录可以采用如下方式:

在获取到待传输数据文件的情况下,获取待传输数据文件的文件名称。

判断客户端中是否存在与待传输数据文件的文件名称相同的文件。

在本实施例中,将待传输数据文件传入客户端进行上传时,首先需要确定上述待传输文件的文件名称;在确定文件名称之后,在客户端的同一目录下判断是否存在于待传输文件具有相同文件名称的文件。由于相同名称的文件无法同时存在于一个目录下的特性,本申请能够准确地判断出在待传输数据文件上传之前是否存在相同文件的上传记录。

步骤S12:在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值。

具体的,在本申请中,在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值。

在一个可选的实施例中,可以利用信息摘要算法确定历史上传文件的散列值以及历史上传分片的散列值。

步骤S13:将待传输数据文件进行切片,生成多个待传输数据块。

在一个可选的实施例中,将待传输数据文件进行切片,生成多个待传输数据块可以采用如下方式:

确定数据文件的内存以及历史上传分片的内存。

基于数据文件的内存以及历史上传分片的内存将数据文件进行切分,生成多个待传输数据块。

在本实施例中,首先需要确定待传输数据文件的内存大小以及历史上传分片的内存大小;因为同一份文件中,合并的分片的内存都已经确定。因此,本申请依据历史上传分片的内存大小,对待传输数据文件进行切分。比如:待传输数据文件的内存为100MB,历史上传分片的内存大小均为5MB,那么依据历史上传分片的内存大小可以将待传输数据文件分为内存相同的20个分片;再比如:多个历史上传分片的内存大小为5MB、7MB、9MB等按照等差数列排序的多个历史上传分片,那么将待传输文件可以按照等差数列的方式,从5MB开始进行切分。

步骤S14:计算出多个待传输数据块的散列值以及待传输数据文件的散列值。

具体的,在本申请中,在得到多个待传输数据块之后,计算待传输数据块的散列值以及待传输数据文件的散列值。

在一个可选的实施例中,可以采用信息摘要算法计算得到待传输数据块的散列值以及待传输数据文件的散列值。

步骤S15:判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值。

步骤S16:判断待传输数据文件的散列值与历史上传文件的散列值是否相同。

步骤S17:在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块进行上传。

具体的,在本申请中,在得到上述待传输数据文件的散列值、待传输数据块的散列值、历史上传文件的散列值以及历史上传分片的所有散列值之后,判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值,判断待传输数据文件的散列值与历史上传文件的散列值是否相同,通过上述判断能够准确地得到待传输数据文件是否与历史上传文件属于同一份文件。在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的数据块进行上传,也就是说,在服务端已经存在部分历史上传分片,然后只需要将除了部分历史上传分片之外的所有待传输数据块进行上传服务端即可,在客户端剩余的待传输数据块无需进行上传。通过这样的方式,能够有效地增加上传速率。

在一个可选的实施例中,在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块进行上传可以采用如下方式:

在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块通过并发线程进行上传。

在本实施例中,可以采用并发线程的方式同时上传所有与历史上传分片的散列值不相同的待传输数据块。通过这样设置的方式,能够有效地提高待传输数据块的上传速率。

在一个可选的实施例中,方法还包括:将与历史上传分片的散列值不相同的待传输数据块以及历史上传分片合并为待传输数据文件。

在本实施例中,在将与历史上传分片的散列值不相同的待传输数据块上传到服务端之后,将上述待传输数据块以及历史上传分片合并为待传输数据文件。

在一个可选的实施例中,方法还包括:在多个待传输数据块的散列值不包含历史上传分片的所有散列值和/或待传输数据文件的散列值与历史上传文件的散列值不相同的情况下,将所有待传输数据块进行上传。

结合图2所示,图2提供了一种数据文件的上传方法的流程图。

1.获取文件。

2.判断该文件是否有历史分片。

3.在存在历史分片的情况下,获取历史分片的散列值。

4.对该文件进行分片,得到现有文件分片。

5.在该文件没有历史分片的情况下,将所有现有文件分片进行上传。

6.判断现有文件分片与历史分片信息是否一致。

7.在现有文件分片与历史分片信息一致的情况下,通过多线程上传剩余分片。

8.在现有文件分片与历史分片信息不一致的情况下,将所有现有文件分片上传。

本申请通过在待传输数据文件进行分片上传的过程中,如果因为系统崩溃或者网络中断等异常因素导致上传中断,这时候客户端需要记录上传的进度。在之后支持再次上传时,可以继续从上次上传中断的地方进行继续上传,从而使客户端知道已经上传的分片数据,从而从下一个分片数据开始继续上传。本申请能够有效地降低储存空间的占用率。

此外,通过并发线程上传分片的方式,能够有效地提高分片上传的效率。

图3示出了本申请实施例提供的数据文件的上传装置的结构示意图。如图3所示,装置包括:

第一判断模块31,用于在获取到待传输数据文件的情况下,判断客户端中是否存在待传输数据文件的上传记录;第一获取模块32,用于在客户端中存在待传输数据文件的上传记录的情况下,获取上传记录中的历史上传文件的散列值以及历史上传分片的散列值;生成模块33,用于将待传输数据文件进行切片,生成多个待传输数据块;计算模块34,用于计算出多个待传输数据块的散列值以及待传输数据文件的散列值;第二判断模块35,用于判断多个待传输数据块的散列值是否包含历史上传分片的所有散列值;第三判断模块36,用于判断待传输数据文件的散列值与历史上传文件的散列值是否相同;第一上传模块37,用于在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块进行上传。

可选的,生成模块33,用于确定数据文件的内存以及历史上传分片的内存;基于数据文件的内存以及历史上传分片的内存将数据文件进行切分,生成多个待传输数据块。

可选的,第一判断模块31,用于在获取到待传输数据文件的情况下,获取待传输数据文件的文件名称;判断客户端中是否存在与待传输数据文件的文件名称相同的文件。

可选的,第一上传模块37,用于在多个待传输数据块的散列值包含历史上传分片的所有散列值以及待传输数据文件的散列值与历史上传文件的散列值相同的情况下,将与历史上传分片的散列值不相同的待传输数据块通过并发线程进行上传。

可选的,装置还包括:合并模块,用于将与历史上传分片的散列值不相同的待传输数据块以及历史上传分片合并为待传输数据文件。

可选的,装置还包括:第二上传模块,用于在多个待传输数据块的散列值不包含历史上传分片的所有散列值和/或待传输数据文件的散列值与历史上传文件的散列值不相同的情况下,将所有待传输数据块进行上传。

本申请通过在待传输数据文件进行分片上传的过程中,如果因为系统崩溃或者网络中断等异常因素导致上传中断,这时候客户端需要记录上传的进度。在之后支持再次上传时,可以继续从上次上传中断的地方进行继续上传,从而使客户端知道已经上传的分片数据,从而从下一个分片数据开始继续上传。本申请能够有效地降低储存空间的占用率。

此外,通过并发线程上传分片的方式,能够有效地提高分片上传的效率。

图3所示装置中的各个模块/单元具有实现图1中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。

图4示出了本申请实施例提供的电子设备的结构示意图。

电子设备可以包括处理器301以及存储有计算机程序指令的存储器302。

具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。

存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在电子设备的内部或外部。在特定实施例中,存储器302可以是非易失性固态存储器。

在一个实施例中,存储器302可以是只读存储器(Read Only Memory,ROM)。在一个实施例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。

处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现上述实施例中的任意一种数据文件的上传方法。

在一个示例中,电子设备还可包括通信接口303和总线310。其中,如图3所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。

通信接口303,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。

总线310包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。

另外,结合上述实施例中的数据文件的上传方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据文件的上传方法。

需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述的结构框图中所示的功能模块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。

上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。

以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

相关技术
  • 一种数据文件修复方法、设备及计算机可读存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 存储设备的数据删除方法、装置及计算机可读存储介质
  • 一种数据存储方法、装置、设备及计算机可读存储介质
  • 数据文件管理方法、装置、设备及计算机可读存储介质
  • 数据文件管理方法、装置、设备及计算机可读存储介质
技术分类

06120116490458