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

文档序号:21000135发布日期:2020-06-05 22:36阅读:156来源:国知局
文件传输方法及装置、系统、电子设备、存储介质与流程

本申请涉及通信技术领域,特别涉及一种文件传输方法及装置、系统、电子设备、计算机非暂态可读存储介质。



背景技术:

在某些业务中,大文件传输是一个比较重要的交互场景,如传输入库比较大的excel表格数据、传输影音文件等。

目前常见的文件传输方法是将文件进行编码,然后在服务端进行解码。其主要实现原理就是将图片转换成base64进行传递,base64编码的缺点在于其体积比原图片更大(因为base64将三个字节转化成四个字节,因此编码后的文本,会比原文本大出三分之一左右),对于体积很大的文件来说,传输和解析的时间会明显增加。

如果文件体积比较大或者网络条件不好时,传输的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成,且很容易遇见服务器超时的问题。



技术实现要素:

本申请实施例的目的在于提供一种文件传输方法,提高大文件传输效率。

一方面,本申请实施例提供了一种文件传输方法,包括:

响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块;

按照每个数据块在所述文件中的先后顺序,为每个数据块标记相应的位置索引值;

针对每个数据块,发送所述数据块的传输请求,所述传输请求包含所述文件的文件标识、所述数据块以及所述数据块的位置索引值。

在一实施例中,所述响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块,包括:

响应文件传输指令,根据所述文件传输指令指示的文件,执行所述文件所对应历史传输记录的获取动作;

判断是否存在所述文件的历史传输记录;以及

当不存在所述文件的历史传输记录时,将所述文件分割为多个数据块。

在一实施例中,所述针对每个数据块,发送所述数据块的传输请求之后,所述方法还包括:

接收所述数据块所对应传输请求的应答消息;

判断是否接收到所有数据块对应的传输请求的应答消息;若是,发送数据块拼接通知。

在一实施例中,所述针对每个数据块,发送所述数据块的传输请求之后,所述方法还包括:

若接收到所述数据块所对应传输请求的应答消息,在所述文件的历史传输记录中,保存所述数据块的标识信息。

在一实施例中,在所述文件的历史传输记录中,保存所述数据块的标识信息之后,所述方法还包括:

若再次接收到所述文件的传输指令,从所述文件的所有数据块中选择不在所述历史传输记录中的目标数据块;

发送所述目标数据块的传输请求;所述目标数据块的传输请求包含所述文件标识、所述目标数据块以及所述目标数据块的位置索引值。

在一实施例中,所述响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块之后,所述方法还包括:

将所述文件的所有数据块进行缓存;

按照预设有效期清除缓存中超过所述有效期的数据块;或者,在发送数据块拼接通知后,清除缓存中所述数据块拼接通知对应的所有数据块。

另一方面,本申请实施例提供一种文件传输方法,包括:

接收传输请求;所述传输请求包含文件标识、文件的数据块以及所述数据块对应的位置索引值;

依据接收的传输请求,返回相应的应答消息;

若接收到基于所述应答消息的数据块拼接通知,将所述文件标识相同的数据块,按照每个数据块的位置索引值按序进行拼接。

在一实施例中,在所述接收传输请求之后,所述方法还包括:

在所述文件标识对应的历史传输记录中,保存所述数据块的标识信息。

此外,本申请实施例还提供了一种文件传输系统,包括:客户端以及与所述客户端通信连接的服务端;

所述客户端用于响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块;按照每个数据块在所述文件中的先后顺序,为每个数据块标记相应的位置索引值;针对每个数据块,向服务端发送所述数据块的传输请求,所述传输请求包含文件标识、所述数据块以及所述数据块的位置索引值;

所述服务端用于接收所述客户端发送的传输请求;为每个传输请求的接收,返回相应的应答消息;若接收到基于所述应答消息的数据块拼接通知,将所述文件标识相同的数据块,按照每个数据块的位置索引值按序进行拼接。

进一步的,本申请实施例提供了一种文件传输装置,包括:

文件切分模块,用于响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块;

位置标记模块,用于按照每个数据块在所述文件中的先后顺序,为每个数据块标记相应的位置索引值;

数据块传输模块,用于针对每个数据块,发送所述数据块的传输请求,所述传输请求包含所述文件的文件标识、所述数据块以及所述数据块的位置索引值。

进一步的,本申请实施例还提供了一种文件传输装置,包括:

请求接收模块,用于接收传输请求;所述传输请求包含文件标识、文件的数据块以及所述数据块对应的位置索引值;

应答返回模块,用于为每个传输请求的接收,返回相应的应答消息;

数据块拼接模块,用于若接收到基于所述应答消息的数据块拼接通知,将所述文件标识相同的数据块,按照每个数据块的位置索引值按序进行拼接。

另外,本申请实施例还提供了一种电子设备,所述电子设备包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述文件传输方法。

进一步的,本申请实施例还提供了一种计算机非暂态可读存储介质,所述非暂态可读存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述文件传输方法。

本申请上述实施例提供的文件传输方法,通过将文件分割成多个数据块,并按照每个数据块在文件中的先后顺序,对数据块标记位置索引值,发送每个数据块的传输请求,传输请求包括了文件标识、数据块以及位置索引值,从而将大文件的传输分割成多个小文件的传输,即使单个小文件传输失败,只需对传输失败的小文件重新进行传输,无需全部重传,从而提高了文件传输效率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。

图1为本申请一示例性实施例示出文件传输系统的架构示意图;

图2是本申请实施例提供的一种文件传输方法的流程示意图;

图3是本申请另一实施例提供的一种文件传输方法的流程示意图;

图4是本申请又一实施例提供的一种文件传输方法的流程示意图;

图5是本申请其他实施例提供的一种文件传输方法的流程示意图;

图6是本申请一实施例提供的一种文件传输装置的框图;

图7是本申请另一实施例提供的一种文件传输装置的框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

图1为本申请实施例提供的文件传输系统的架构示意图。如图1所示,该文件传输系统包括客户端110和服务端120。客户端与服务端之间通过有线或无线网络通信。客户端110可以是运行应用程序的个人电脑(personalcomputer,pc)、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)等。服务端120可以是服务器、服务器集群或者云计算中心。

客户端110可以采用本申请下述实施例提供的文件传输方法,将文件以一个个数据块的形式分开传输至服务端120。服务端120可以采用本申请下述实施例提供的文件传输方法,接收客户端110传输的数据块,并拼接形成一个完整的文件。由此每个传输请求的时间就会缩短,无需长时间等待请求完成,如果某个请求失败,只需对该请求重新发送,无需从头开始,实现了大文件从客户端110到服务端120的高效传输。

本申请实施例还提供了一种电子设备。该电子设备可以是上述客户端110或服务端120。电子设备可以包括处理器;用于存储处理器可执行指令的存储器;其中,该处理器被配置为执行本申请提供的数据传输方法。

存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,简称eprom),可编程只读存储器(programmablered-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。

本申请还提供了一种计算机非暂态可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器执行以完成本申请提供的数据传输方法。

图2是本申请实施例提供的一种文件传输方法的流程示意图,该方法可以应用于图1所示实施环境中的客户端110,如图2所示,该方法可以包括以下步骤210-230。

在步骤210中,响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块。

在一实施例中,用户选中待传输的文件,并点击“上传”按钮后,客户端接收到文件传输指令。文件传输指令可以包括待传输文件的文件标识、客户端可以根据文件传输指令包括的文件标识,将文件标识对应的文件分割为多个数据块。

数据块是指从大文件中分割出来的小文件。在一实施例中,文件可以是二进制文件。在javascript(一种编程语言)中,文件对象是blob对象的子类,blob对象包含一个重要的slice方法,通过这个方法,可以对二进制文件进行分割。将文件分割成指定大小的分块(即数据块)。

在一实施例中,客户端可以在磁盘上缓存分割得到的所有数据块,并定期清除掉超过有效期的数据块。

在步骤220中,按照每个数据块在所述文件中的先后顺序,为每个数据块标记相应的位置索引值。

其中,位置索引值用于表征每个数据块在文件中的先后顺序。举例来说,假设文件被分割为10个数据块,则按照每个数据块在文件中的先后顺序,可以依次标记为1、2、3……10。此时,数值“1”、“2”…..“10”可以认为是每个数据块的位置索引值。通过对数据块标记相应的位置索引值,可以方便后续按照数据块的位置索引值,按序对数据块进行拼接。

在步骤230中,针对每个数据块,发送所述数据块的传输请求。其中,传输请求包含所述文件的文件标识、所述数据块以及所述数据块的位置索引值。

其中,每个文件具有唯一标识,称为文件标识。文件标识可以是文件名,也可以由文件名和文件长度等基本信息拼接而成。为了避免多个用户上传相同的文件,文件标识还可以包括用户信息。在一实施例中,文件标识可以是文件的哈希值。由此只要文件内容不同,则文件标识就会不同。

一个文件可以分割成多个数据块,客户端可以针对每个数据块,向服务端发送一次该数据块的传输请求,从而将一个大文件的传输分割成多个小文件的传输。客户端每次发送的传输请求可以包括数据块所在文件的文件标识、数据块的数据内容以及数据块的位置索引值。从而方便服务端基于文件标识确定哪些数据块属于同一个文件,基于位置索引值可以将属于同一文件的数据块按序进行拼接。

本申请上述实施例提供的文件传输方法,通过将文件分割成多个数据块,并按照每个数据块在文件中的先后顺序,对数据块标记位置索引值,发送每个数据块的传输请求,传输请求包括了文件标识、数据块以及位置索引值,从而将大文件的传输分割成多个小文件的传输,即使单个小文件传输失败,只需对传输失败的小文件重新进行传输,无需全部重传,从而提高了文件传输效率。

在一实施例中,如图3所示,上述步骤210具体包括以下步骤211和212。

在步骤211中,响应文件传输指令,根据所述文件传输指令指示的文件,执行所述文件所对应历史传输记录的获取动作。

其中,历史传输记录可以位于客户端本地,也可以位于服务端。客户端接收到文件传输指令后,可以从本地获取历史传输记录,也可以从服务端获取历史传输记录。历史传输记录是指文件中各个数据块的传输记录。历史传输记录中记载了已经传输成功的数据块的位置索引值、数据块所在文件的文件标识,根据需要还可以包括具体的数据块内容。客户端或服务端可以针对每个文件,创建一个文件夹,用于存储该文件对应的历史传输记录,该文件夹可以用文件名称或者文件标识命名,方便查找。

在步骤212中,判断是否存在所述文件的历史传输记录;当不存在所述文件的历史传输记录时,将所述文件分割为多个数据块。

客户端或服务端不存在文件的历史传输记录,表示文件需要重新传输,则将文件分割成多个数据块,分开进行传输。

如果客户端或服务端存在文件的历史传输记录,表示服务端已经成功接收到了若干数据块,由此客户端可以基于历史传输记录确定已经成功传输了哪些数据块,从磁盘中获取不在历史传输记录中的数据块进行重新传输。即使页面刷新、网络故障,文件需要重新传输,也可以避免重复上传,提高传输效率。

在一实施例中,如图4所示,在上述步骤230之后,本申请实施例提供的方法还可以包括以下步骤240和步骤250。

在步骤240中,接收所述数据块所对应传输请求的应答消息。

其中,客户端每发送一个切片的传输请求,如果服务端接收到该传输请求,则向客户端返回该传输请求的应答消息。通过客户端超时未收到应答消息,可以认为服务端未接收到传输请求,故客户端基于接收到的应答消息,可以确定发送的传输请求是否被接收。

在步骤250中,判断是否接收到所有数据块对应的传输请求的应答消息;若是,发送数据块拼接通知。

文件包含多个数据块,如果客户端发送每个数据块的传输请求后,均接收到了服务端针对该传输请求的应答消息,则表示每个数据块均发送成功,由此客户端可以向服务端发送数据块拼接通知。数据块拼接通知可以包括文件标识。服务端接收到数据块拼接通知,可以根据文件标识,将文件标识对应的所有数据块,按照每个数据块的位置索引值按序进行拼接。

在一实施例中,在某个文件的数据块均发送成功,客户端向服务端发送该文件的数据块拼接通知后,客户端可以删除磁盘中缓存的该文件的所有数据块。

在一实施例中,客户端在接收到某个传输请求的应答消息后,可以基于应答消息确定对应的传输请求,进而获得传输请求中包含的数据块、文件标识和位置索引值。客户端可以在文件标识对应的历史传输记录中保存数据块的标识信息。标识信息可以包括上述文件标识、位置索引值,根据需要,还可以包括数据块的具体数据内容。

在一实施例中,客户端如果再次接收到相同文件的传输指令,可以获取该文件的历史传输记录,根据历史传输记录的记载可以确定已经成功传输了哪些数据块,故可以从磁盘中选取不在历史传输记录中的目标数据块,向服务端发送目标数据块的传输请求。目标数据块是指在历史传输记录中没有记载,即没有传输成功需要重新传输的数据块。为进行区分,此处称为目标数据块。目标数据块的传输请求可以包括目标数据块所在文件的文件标识,目标数据块的数据内容以及目标数据块的位置索引值。

图5是本申请实施例提供的文件传输方法的流程示意图。该方法可以应用于服务端,服务端执行文件传输方法的具体步骤可以参见上文客户端侧的实施例。如图5所示,该方法可以包括以下步骤510-530。

在步骤510中,接收传输请求;所述传输请求包含文件标识、文件的数据块以及所述数据块对应的位置索引值。

在步骤520中,为每个传输请求的接收,返回相应的应答消息。

在步骤530中,若接收到基于所述应答消息的数据块拼接通知,将所述文件标识相同的数据块,按照每个数据块的位置索引值按序进行拼接。

在一实施例中,服务端在接收到传输请求后,可以创建文件标识对应的历史传输记录,在历史传输记录中已成功接收的数据块的标识信息。标识信息可以包括文件标识、数据块的位置索引值,还可以包括数据块的数据内容。

图6是本申请实施例提供的文件传输装置的架构示意图。该装置可以作为客户端,该装置可以包括:文件切分模块610、位置标记模块620以及数据块传输模块630。

文件切分模块610,用于响应文件传输指令,将所述文件传输指令指示的文件分割为多个数据块;

位置标记模块620,用于按照每个数据块在所述文件中的先后顺序,为每个数据块标记相应的位置索引值;

数据块传输模块630,用于针对每个数据块,发送所述数据块的传输请求,所述传输请求包含所述文件的文件标识、所述数据块以及所述数据块的位置索引值。

上述装置中各个模块的功能和作用的实现过程具体详见上述文件传输方法中对应步骤的实现过程,在此不再赘述。

图7是本申请实施例提供的文件传输装置的架构示意图。该装置可以作为服务端,该装置可以包括:请求接收模块710、应答返回模块720以及数据块拼接模块730。

请求接收模块710,用于接收传输请求;所述传输请求包含文件标识、文件的数据块以及所述数据块对应的位置索引值;

应答返回模块720,用于为每个传输请求的接收,返回相应的应答消息;

数据块拼接模块730,用于若接收到基于所述应答消息的数据块拼接通知,将所述文件标识相同的数据块,按照每个数据块的位置索引值按序进行拼接。

上述装置中各个模块的功能和作用的实现过程具体详见上述文件传输方法中对应步骤的实现过程,在此不再赘述。

在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1