一种文件传输方法、装置、设备及机器可读存储介质
文献发布时间:2023-06-19 11:39:06
技术领域
本公开涉及通信技术领域,尤其是涉及一种文件传输方法、装置、设备及机器可读存储介质。
背景技术
BMC(Baseboard Management Controller,基板管理控制器),它可以在机器未开机的状态下,对机器进行固件升级、查看机器设备、等一些操作。
随着服务器技术的不断发展,用户对BMC带外管理能力的需求也不断提升。越来越多的设备固件文件、配置文件等信息需要通过网络上传到BMC侧,来进行设备的配置与更新。这些数据交互越来越多,文件上传的性能也越来越受到关注,而当前文件上传的长耗时特性,严重影响着用户体验。
用户通过浏览器上传的文件,通过Lighttpd经由FastCGI传递到最终的目的地址中。Lighttpd传统的文件上传方式,对于请求的数据,都会分片存储于1M大小的临时文件中,如果整体数据大于1M,则切分为多个临时文件进行存储。等到数据全部接收完毕后,将之前分片的数据进行整合,然后把整合后的数据重新写入FastCGI的标准输入流中,最后再读取出标准输入流中的数据,进行数据的最终接收处理。
按照Lighttpd传统的文件上传方式,每个大文件传输都需要经过5个步骤:数据接收、数据分片存储、数据分片整合、数据写入标准输入流、从标准输入流读取数据、写入最终目的地址。整体数据传输流程涉及到3次文件读写操作。重复的文件读写,大大增加了整个文件上传流程的处理时间。
发明内容
有鉴于此,本公开提供一种文件传输方法、装置及电子设备、机器可读存储介质,以改善上述上传文件流程读写操作次数过多的问题。
具体地技术方案如下:
本公开提供了一种文件传输方法,应用于服务器,所述方法包括:根据端口数据,获取待传输数据的文件大小;根据文件大小大于阈值的待传输数据,建立目标文件;按照预设规则接受待传输数据的数据包,在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件。
作为一种技术方案,所述按照预设规则接受待传输数据的数据包,包括:逐个接收对端设备根据文件大小大于阈值的待传输数据,将待传输数据分割成的大小小于等于阈值的数据包。
作为一种技术方案,所述在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件,包括:解析数据包的数据,若匹配到预设特定标识,则在清洗当前数据包并将当前数据包写入目标文件后,完成所述待传输数据的接收;否则,清洗数据包并将数据包写入目标文件,然后接收下一个数据包。
作为一种技术方案,所述清洗数据包并将数据包写入目标文件,包括:去除数据包中与待传输数据无关的无效数据,然后将剩余数据写入目标文件。
本公开同时提供了一种文件传输装置,应用于服务器,所述装置包括:分析模块,用于根据端口数据,获取待传输数据的文件大小;文件模块,用于根据文件大小大于阈值的待传输数据,建立目标文件;数据模块,用于按照预设规则接受待传输数据的数据包,在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件。
作为一种技术方案,所述按照预设规则接受待传输数据的数据包,包括:逐个接收对端设备根据文件大小大于阈值的待传输数据,将待传输数据分割成的大小小于等于阈值的数据包。
作为一种技术方案,所述在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件,包括:解析数据包的数据,若匹配到预设特定标识,则在清洗当前数据包并将当前数据包写入目标文件后,完成所述待传输数据的接收;否则,清洗数据包并将数据包写入目标文件,然后接收下一个数据包。
作为一种技术方案,所述清洗数据包并将数据包写入目标文件,包括:去除数据包中与待传输数据无关的无效数据,然后将剩余数据写入目标文件。
本公开同时提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器执行所述机器可执行指令以实现前述的文件传输方法。
本公开同时提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现前述的文件传输方法。
本公开提供的上述技术方案至少带来了以下有益效果:
在判断待传输数据的大小大于阈值时,不再使用CHUNCK编码,而是建立一个目标文件,通过分析单个大小不超过阈值数据包中是否带有约定的特定标识来判断待传输数据分割成的数据包是否已传输完成,然后在传输完成前将清洗后的数据写入目标文件中,从而改善了上传文件流程读写操作次数过多的问题。
附图说明
为了更加清楚地说明本公开实施方式或者现有技术中的技术方案,下面将对本公开实施方式或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施方式,对于本领域普通技术人员来讲,还可以根据本公开实施方式的这些附图获得其他的附图。
图1是本公开一种实施方式中的文件传输方法的流程图;
图2是本公开一种实施方式中的文件传输装置的结构图;
图3是本公开一种实施方式中的电子设备的硬件结构图。
具体实施方式
在本公开实施方式使用的术语仅仅是出于描述特定实施方式的目的,而非限制本公开。本公开和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施方式可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在一种实施方式中,可以基于linux TCP/IP内核参数优化方案,通过调节TCPrecvBuffer大小来减少TCP接收数据报的时间,从而实现Lighttpd上传文件的优化。但参数调节复杂,调参前需要了解具体的网络环境细节,不断调整参数值,验证效果,最终获得一个较好的优化结果,且参数不具有通用性,TCP/IP参数调优与具体的网络环境有关,网络环境发生变化后,文件上传的速度会受到影响。
有鉴于此,本公开提供一种文件传输方法、装置及电子设备、机器可读存储介质,以改善上述上传文件流程读写操作次数过多的问题。
具体地技术方案如后述。
在一种实施方式中,本公开提供了一种文件传输方法,应用于服务器,所述方法包括:根据端口数据,获取待传输数据的文件大小;根据文件大小大于阈值的待传输数据,建立目标文件;按照预设规则接受待传输数据的数据包,在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件。
具体地,如图1,包括以下步骤:
步骤S11,根据端口数据,获取待传输数据的文件大小;
步骤S12,根据文件大小大于阈值的待传输数据,建立目标文件;
步骤S13,按照预设规则接受待传输数据的数据包,在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件。
在判断待传输数据的大小大于阈值时,不再使用CHUNCK编码,而是建立一个目标文件,通过分析单个大小不超过阈值数据包中是否带有约定的特定标识来判断待传输数据分割成的数据包是否已传输完成,然后在传输完成前将清洗后的数据写入目标文件中,从而改善了上传文件流程读写操作次数过多的问题。
其中,约定的特定标识可以是符合根据rfc1867和rfc1341规范要求,Content-Type字段中的参数“边界(boundary)”。该参数用于指定封装边界,用于确定有效数据的长度信息。在由待传输数据分割成的数据包中,第一个数据包能匹配到边界(boundary)分隔符的位置,获取到有效数据的起始位置,而在最后一个数据包中,可以匹配到结束边界,以此来确定有效数据的结束位置,结束边界即为特定标识。
在一种实施方式中,所述按照预设规则接受待传输数据的数据包,包括:逐个接收对端设备根据文件大小大于阈值的待传输数据,将待传输数据分割成的大小小于等于阈值的数据包。
阈值可以根据不同的使用环境使用不同的数值,在一种实施方式中,可以为64KB,即待传输数据大于64KB时,将待传输数据分割为单个64KB的数据包,其中最后一个数据包可能小于64KB。
在一种实施方式中,所述在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件,包括:解析数据包的数据,若匹配到预设特定标识,则在清洗当前数据包并将当前数据包写入目标文件后,完成所述待传输数据的接收;否则,清洗数据包并将数据包写入目标文件,然后接收下一个数据包。
在一种实施方式中,所述清洗数据包并将数据包写入目标文件,包括:去除数据包中与待传输数据无关的无效数据,然后将剩余数据写入目标文件。
数据包中可能携带有与待传输数据实质内容无关的无效数据,如文件头、文件尾等,清洗去除掉这些无效数据后,写入目标文件。
在一种实施方式中,本公开同时提供了一种文件传输装置,如图2,应用于服务器,所述装置包括:分析模块21,用于根据端口数据,获取待传输数据的文件大小;文件模块22,用于根据文件大小大于阈值的待传输数据,建立目标文件;数据模块23,用于按照预设规则接受待传输数据的数据包,在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件。
在一种实施方式中,所述按照预设规则接受待传输数据的数据包,包括:逐个接收对端设备根据文件大小大于阈值的待传输数据,将待传输数据分割成的大小小于等于阈值的数据包。
在一种实施方式中,所述在匹配到携带特定标识的数据包前,清洗数据包并将数据包写入目标文件,包括:解析数据包的数据,若匹配到预设特定标识,则在清洗当前数据包并将当前数据包写入目标文件后,完成所述待传输数据的接收;否则,清洗数据包并将数据包写入目标文件,然后接收下一个数据包。
在一种实施方式中,所述清洗数据包并将数据包写入目标文件,包括:去除数据包中与待传输数据无关的无效数据,然后将剩余数据写入目标文件。
装置实施方式与对应的方法实施方式相同或相似,在此不再赘述。
在一种实施方式中,本公开提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器执行所述机器可执行指令以实现前述的文件传输方法,从硬件层面而言,硬件架构示意图可以参见图3所示。
在一种实施方式中,本公开提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现前述的文件传输方法。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施方式阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本公开时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本公开的实施方式可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本公开实施方式可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域技术人员应明白,本公开的实施方式可提供为方法、系统或计算机程序产品。因此,本公开可以采用完全硬件实施方式、完全软件实施方式、或者结合软件和硬件方面的实施方式的形式。而且,本公开可以采用在一个或者多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本公开的实施方式而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。
- 一种文件传输方法、装置、设备及机器可读存储介质
- 一种文件传输方法、装置、设备及可读存储介质