CN114710482A - 文件检测方法、装置、电子设备及存储介质 - Google Patents
文件检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114710482A CN114710482A CN202210293129.0A CN202210293129A CN114710482A CN 114710482 A CN114710482 A CN 114710482A CN 202210293129 A CN202210293129 A CN 202210293129A CN 114710482 A CN114710482 A CN 114710482A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- target
- bytes
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000005540 biological transmission Effects 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 abstract description 32
- 238000012795 verification Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 4
- 239000003550 marker Substances 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件检测方法、装置、电子设备及存储介质,应用于文件检测引擎,涉及文件检测领域。所述方法包括:接收文件输入流传输的文件数据,该文件数据为文件输入流从客户端获取的目标文件的数据。若接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量,确定预设字节数量的文件数据与文件头标志是否匹配。若匹配,表示该目标文件为预设文件类型,可将预设字节数量的文件数据及预设字节数量的文件数据之后的目标文件的剩余数据传输到文件输出流。由此,当文件上传中接收到标志文件类型的文件头,即可检测该文件的文件类型,因此能够及时有效的区分出有效文件。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种文件检测方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的不断发展,越来越多的用户习惯于使用电子化的文档来完成工作、学习、娱乐等多方面的需求。而与此同时,由于文件在不同设备之间相互传输的情况也越来越频繁,然后不同设备所需的文件可能不同,若接收到的文件不是该设备所需的文件,则还需要重新传输文件,费时费力。此外,网络中各种恶意文件也在不断增加,若直接将接收的文件保存到设备中,则给了恶意文件可乘之机。因此,在接收文件时,需要对其进行检测,确定该文件是否为有效文件。但是,现有对文件进行检测的方式无法及时有效的识别出当前传输的文件是否是有效文件。
发明内容
鉴于上述问题,本申请提出了一种文件检测方法、装置、电子设备及存储介质,能解决上述问题。
第一方面,本申请实施例提供了一种文件检测方法,应用于文件检测引擎,所述方法包括:接收文件输入流从目标文件传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据;若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量;若匹配,则将所述预设字节数量的文件数据,以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
第二方面,本申请实施例提供了一种文件检测装置,所述装置包括:接收单元、匹配单元以及传输单元。其中,接收单元用于接收文件输入流从目标文件传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据;匹配单元用于若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量;传输单元用于若匹配,则将所述预设字节数量的文件数据以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中,所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述方法。
第五方面,本申请实施例提供了一种包含指令的计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机实现上述方法。
可以看出,在本申请实施例中,可以接收文件输入流从目标文件传输的文件数据,该文件数据为文件输入流从客户端获取的目标文件的数据。若接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量,确定预设字节数量的文件数据与文件头标志是否匹配。如果匹配,则表示该目标文件为预设文件类型,可以将预设字节数量的文件数据以及预设字节数量的文件数据之后的目标文件的剩余数据传输到文件输出流。由此,在文件上传中接收到标志文件类型的文件头时,即可检测出该文件的文件类型,而无需等到全部文件传输完成,并且当文件类型匹配时则将该文件作为有效的文件继续传输,因此不仅能够提高文件类型的检测效率,还可以及时有效地区分出有效文件。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的文件检测方法的一种应用环境示意图;
图2示出了本申请一实施例提供的文件检测方法的流程示意图;
图3示出了本申请另一实施例文件上传页面的示意图;
图4示出了本申请一实施例提供的文件检测方法的文件流处理过程示意图;
图5示出了本申请又一实施例提供的文件检测方法的流程示意图;
图6示出了本申请再一实施例提供的文件检测方法的流程示意图;
图7示出了本申请一实施例提供的文件传输的处理过程示意图;
图8示出了本申请一实施例提供的多种文件类型的文件检测方法的流程示意图;
图9示出了本申请一实施例提供的文件检测方法的完整流程示意图;
图10示出了本申请另一实施例提供的文件检测方法的完整流程示意图;
图11示出了本申请实施例提供的文件检测装置的模块框图;
图12示出了本申请实施例提供的电子设备的结构框图;
图13示出了本申请实施例提供的计算机可读存储介质的结构框图;
图14示出了本申请实施例提供的一种计算机程序产品的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在相关技术中,可以通过对上传文件验证文件真实类型的方式过滤不合规的文件类型,从而大于或等于识别有效文件的目的。例如,先把上传文件保存到文件检测引擎中。其中,文件检测引擎例如可以为应用程序,可以运行于服务器等电子设备中。再对文件的头几位字节数据进行验证,从而确定文件的真实类型。但是,此时若验证失败,电子设备上保存的文件就变成了垃圾文件。这样,不仅使得整个验证过程效率低,还占用了硬盘资源,而且后续还需要清除垃圾文件。
针对上述问题,发明人提出,在文件上传时在接收到标志文件类型的文件头时,即对该文件的文件头进行检测,因此能够及时有效的区分出有效文件。
为了更好理解本申请实施例提供的一种文件检测方法、装置、电子设备及存储介质,下面先对适用于本申请实施例的应用环境进行描述。
请参阅图1,图1示出了本申请一实施例提供的文件检测方法的一种应用环境示意图。示例性地,本申请实施例提供的文件检测方法、装置、电子设备及存储介质可以应用于文件检测引擎中,其中,文件检测引擎可以运行于电子设备中,例如可以运行在如图1中所示的服务器110,服务器110可以通过网络与终端设备120相连。其中,网络用以在服务器110和终端设备120之间提供通信链路的介质。网络可以包括各种连接类型,例如有线通信链路、无线通信链路等等,本申请实施例对此不作限制。可选地,在另一些实施例中,电子设备也可以是智能手机、笔记本电脑等等。
应该理解,图1中的服务器110、网络和终端设备120仅仅是示意性的。根据实现需要,可以具有任意数目的服务器、网络和终端设备。示例性地,服务器110可以是物理服务器,也可以是由多个服务器组成的服务器集群等,终端设备120可以是手机、平板、台式电脑、笔记本电脑等等设备。可以理解的是,本申请的实施例还可以允许多台终端设备120同时接入服务器110。
在一些实施例中,终端设备120可以通过网络向服务器110上传文件,在服务器110可以通过文件检测引擎对这些文件进行检测后,检测通过后再将这些文件保存或发送给其他电子设备。例如可以保存在本地硬盘,也可以将这些文件中的数据保存到数据库,本申请实施例对此不作限制。
上述应用环境仅为方便理解所作的示例,可以理解的是,本申请实施例不仅局限于上述应用环境。
下面将通过具体实施例对本申请实施例提供的文件检测方法、装置、电子设备及存储介质进行详细说明。
请参阅图2,其示出了本申请一实施例提供的文件检测方法的流程示意图。下面将针对图2所示的流程进行详细的阐述,所述文件检测方法具体可以包括如下步骤:
步骤S210:接收文件输入流从目标文件传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据。
在本申请的实施例中,在客户端向运行有文件检测引擎的电子设备上传目标文件之前,客户端可以向该电子设备发送目标文件的文件请求。根据该文件请求,客户端可以向电子设备请求建立连接,例如建立文件的传输通道等等。在一些实施方式中,客户端可以检测用户的上传操作,该上传操作例如可以是用户在文件上传页面的点击操作,如图3所示,当检测到用户的上传操作时,客户端即可向电子设备发送上传操作对应的目标文件的文件请求。
可选地,在检测到用户的上传操作时,客户端还可以检测该上传操作是否对应有目标文件,若有目标文件,再向电子设备发送文件请求;若没有目标文件,则可以在屏幕上显示提示信息,该提示信息可以用于提醒用户上传文件。
可以理解的是,客户端可以是用户使用的终端设备,例如图1所示的终端设备120,电子设备可以是如图1所示的服务器,也可以是智能手机、笔记本电脑等等电子设备中的任何一个,本申请实施例对此不做限制。
在本实施例中,客户端可以按照与电子设备协商好的目标字节数量,逐个向电子设备上传目标文件的目标字节数量的文件数据,其中,目标字节数量可以为N,N为正整数。当电子设备检测到客户端发送的目标文件的文件请求时,则可以按照目标字节数量逐个接收目标文件的文件数据。其中,在本申请的实施例中,电子设备中的文件检测引擎可以以文件输入流的方式从客户端接收目标文件,同时以文件输入流的方式将接收到的目标文件发送到文件检测引擎,所述文件输入流是文件传输的一种输入接口,可选的,。可以以字节序列的方式进行文件传输。如图4所示。其中,在文件传输过程中,可以以字节序列的方式传输文件,可以将文件上传过程对应的字节序列称为文件输入流,将文件保存过程或者文件转发过程对应的字节序列称为文件输出流。在图4中,响应于用户从客户端上传的文件请求,系统中的文件检测引擎可以创建与该文件请求相对应的原始文件输入流(文件输入流),然后将目标文件的数据从原始文件输入流读取到该文件检测引擎,其中,本申请实施例中的文件检测引擎例如可以为图4中验证类型的文件输入流。其中,当文件检测引擎(即验证类型的文件输入流)从原始文件输入流读取到中读取到目标文件的数据时,文件检测引擎可以对该目标文件的文件类型进行验证。当文件检测引擎确定该目标文件为预设文件类型的文件后,再将目标文件传输到文件输出流中。
在一些实施方式中,可以将该原始文件输入流作为本申请实施例中的文件输入流,该原始文件输入流可以用于从客户端获取目标文件的数据。具体地,在原始文件输入流从客户端获取目标文件的数据的同时,可以逐N个字节地从原始文件输入流向文件检测引擎传输目标文件的文件数据。可选地,在文件检测引擎接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量时,将在文件检测引擎中对目标文件的文件类型进行验证匹配。示例性地,在文件检测引擎接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量时,可以判断文件检测引擎接收到的文件数据的字节数量是否小于预设字节数量,若小于,则文件检测引擎接收到的文件数据的字节数量未大于或等于预设字节数量;若不小于(即大于或等于),则文件检测引擎接收到的文件数据的字节数量大于或等于预设字节数量。
可以理解的是,电子设备可以同时与多个客户端建立连接,因此,电子设备可以同时处理多个客户端发送的文件请求,并且同时接收目标文件以及处理本申请实施例所述的文件检测方法。
步骤S220:若接收到的文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量。
在本申请的实施例中,当文件检测引擎接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的字节数量时,可以将预设字节数量的文件数据与文件头标志进行匹配。示例性地,可以确定预设字节数量的文件数据与文件头标志的各个字符是否一致,若一致,则表示预设字节数量的文件数据与文件头标志相匹配。可以理解的是,预设字节数量大于或等于N个字节,即N可以取值为小于或等于预设字节数量的整数。其中,预设字节数量例如可以在4~10字节之间(包括端点值),N例如可以为1。
需要说明的是,预设文件类型可以是电子设备需要的有效文件的文件类型,预设文件类型可以预先设置。可以理解的是,预设文件类型可以为多种文件类型。
在一些实施方式中,当预设文件类型为多种文件类型时,可以将多种文件类型中文件头标志字节数量最大的文件类型的文件头标志字节数量作为预设字节数量。接着,将预设字节数量的文件数据与各个文件类型对应的文件头标志进行逐个匹配,若存在一个与预设字节数量的文件数据相匹配的文件类型,则表示目标文件为电子设备需要的有效文件,可以继续传输该目标文件的文件数据。
在另一些实施方式中,在逐N个字节地接收目标文件的文件数据时,每当接收到的文件数据的字节数量大于或等于多种文件类型中某个文件头标志的字节数量时触发匹配操作。也就是说,可以将多种文件类型按照文件头标志的字节数量进行排序,并且在起始时将多种文件类型中字节数量最小的文件头标志的字节数量作为预设字节数量。当接收到预设字节数量的文件数据时,将预设场地的文件数据与各个文件类型中字节数量最小的文件头标志相匹配。若不匹配,则继续逐N个字节地接收当前文件数据之后的新的文件数据,并且将各个文件类型中字节数量倒数第二的文件头标志的字节数量作为预设字节数量,以此类推,当从各个文件类型中得到与目标文件的文件数据相匹配的文件头标志,则表示目标文件为有效文件,可以继续传输目标文件,无需再执行匹配操作。
例如,客服系统在接收客户名单时,由于名单数据量过大,采用的是使用上传excel数据文件的方式。因此,需要验证接收到的文件是否为真实的excel文件,则需要校验文件合法性。例如用户自己将pdf文件后缀改为xls,系统同样视为该文件为无效文件,因为文件的真实类型仍然为pdf。此时,预设文件类型可以为xls、xlsx。以xls为例,其文件头标志为“0xD0CF11E0A1B11AE1”,预设字节数量为8个字节,因此,当接收到的文件数据的字节数量大于或等于8个字节时,则确定8个字节的文件数据与xls的文件头标志是否匹配。
步骤S230:若匹配,则将所述预设字节数量的文件数据,以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
在本实施例中,如果预设字节数量的文件数据与文件头标志匹配,则可以继续传输目标文件,即是说,可以将预设字节数量的文件数据以及预设字节数量的文件数据之后目标文件的剩余数据传输到文件输出流。
可选地,文件输出流可以将目标文件的文件数据从文件检测引擎传输到电子设备的本地硬盘中,也可以将目标文件的文件数据从文件检测引擎传输到电子设备的其他处理模块,例如可以通过文件输出流将目标文件保存到数据库或传输到其他电子设备中等等,本申请实施例对此不做限制。
在一些实施方式中,确定预设字节数量的文件数据与文件头标志匹配之后,在将预设字节数量的文件数据之后的目标文件的剩余数据传输到文件输出流前,文件检测引擎可以将预设字节数量的文件数据传输到文件输入流,并且继续接收文件输入流从预设字节数量的文件数据之后逐N个字节传输的剩余数据,然后将接收到的剩余数据发送给文件输出流。可选地,可以逐N个字节地将预设字节数量的文件数据和剩余数据传输到文件输出流,也可以在接收到目标文件的所有文件数据之后再将所有文件数据一并传输给文件输出流,本申请实施例对此不作限制。
可以理解的是,接收到的预设字节数量的文件数据为目标文件的文件头数据。因此,本申请可以在接收到目标文件的文件头数据时,即可进行文件类型的验证,而无需在接收到目标文件的所有文件数据之后,再验证目标文件的文件类型。
需要说明的是,当文件输入流从客户端获取的目标文件的数据,即传输文件数据时,可以从目标文件的起始字节开始传输,也可以不从起始字节开始传输,本申请实施例对此不作限制。
综上所述,本实施例提供的文件检测方法,可以接收由文件输入流传输的文件数据,该文件数据为文件输入流从客户端获取的目标文件的数据。若接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量,则确定预设字节数量的文件数据与文件头标志是否匹配。如果匹配,则表示该目标文件为预设文件类型,可以将预设字节数量的文件数据以及预设字节数量的文件数据之后的目标文件的剩余数据传输到文件输出流。由此,在文件上传中接收到标志文件类型的文件头时,即可检测出该文件的文件类型,而无需等到全部文件传输完成,并且当文件类型匹配时则将该文件作为有效的文件继续传输,因此不仅能够提高文件类型的检测效率,还可以及时有效地区分出有效文件。
在一些实施方式中,可选地,本实施例在上述实施例的基础上,若确定预设字节数量的文件数据与文件头标志不匹配,则可以将目标文件与文件头标志的匹配结果输出为不匹配,还可以终止目标文件的传输,在不是所需要的文件时,及时停止数据的传输,节省了存储空间。可选地,可以将文件检测引擎对应的文件输入流中断,和/或将文件检测引擎的文件输出流中断等等。进一步地,还可以将电子设备与客户端之间传输目标文件的传输通道关闭。更进一步地,电子设备还可以向客户端发送提醒信息,用于提示客户端的目标文件上传失败。
请参阅图5,其示出了本申请又一实施例提供的文件检测方法的流程示意图。所述接收由文件输入流传输的文件数据,若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,具体可以包括如下步骤:
步骤S510:接收所述目标文件的N个字节的目标数据,所述N个字节的目标数据是由文件输入流从目标文件的起始字节开始传输的数据。
步骤S520:将所述N个字节的目标数据保存到缓存中。
步骤S530:确定缓存中的目标数据的字节数量是否大于或等于预设字节数量。若是,执行步骤S540。
在本实施例中,文件输入流从目标文件的起始字节开始逐N个字节的向电子设备的文件检测引擎传输目标文件的文件数据。可选地,当文件检测引擎接收到起始的N个字节的目标数据后,可以将这N个字节的目标数据保存到电子设备的缓存中。接着,需要确定缓存中的目标数据的字节数量是否大于或等于预设文件类型的文件头标志的预设字节数量。如果大于或等于了预设字节数量,则表示根据当前缓存中的目标数据可以确定目标文件的文件类型;如果没有大于或等于预设字节数量,则继续接收当前目标数据之后的目标文件的N个字节的数据,并将当前目标数据加上N个字节的数据作为新的目标数据保存到缓存中,直到缓存中的目标数据的字节数量大于或等于预设字节数量为止。
其中,在继续接收当前目标数据之后的目标文件的N个字节的数据的过程中,在一些实施方式中,文件的传输操作和文件头标志的匹配操作是分开处理的,因此,文件传输的过程中无法得知文件头标志的匹配操作是否完成,可以在确定文件头匹配操作未完成的情况下,再继续接收当前目标数据之后的目标文件的N个字节的数据,并将当前目标数据加上N个字节的数据作为新的目标数据保存到缓存中。请参阅图6,其示出了本申请再一实施例提供的文件检测方法的流程示意图。所述继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中,具体可以包括如下步骤:
步骤S610:确定所述目标文件是否完成所述文件头标志的匹配操作。
当继续接收当前目标数据之后的目标文件的N个字节的数据时,而不对文件头标志的匹配操作的完成情况进行判断,则可能出现文件头标志的匹配操作已完成的同时,还将N个字节的数据保存到缓存,此时缓存中的目标数据的字节数量已经大于或等于预设字节数量,无需再执行文件头标志的匹配操作,但文件头以外的N个字节的数据还是被保存到了缓存中,此时缓存中的目标数据为无效数据,占用了存储资源。因此,在本申请的一些实施例中,当继续接收当前目标数据之后的所述目标文件的N个字节的数据时,可以对文件头标志的匹配操作的完成情况进行判断,即确定当前目标文件是否完成文件头标志的匹配操作,再确定是否需要将读取到的N个字节的数据保存到缓存中。
在一些实施方式中,可以由不同的进程分别处理文件的传输操作以及文件头标志的匹配操作。示例性地,在进程A处理文件的传输操作的过程中,可以向处理文件头标志的匹配操作的进程B发送匹配请求消息,在进程B接收到匹配请求消息后将进程B自身的处理情况,即文件头标志的匹配情况封装在匹配确认消息中,再将匹配确认消息发送给进程A。进程A接收到匹配确认消息后,可以根据匹配确认消息确定目标文件是否完成文件头标志的匹配操作。
步骤S620:若未完成,继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中。
步骤S630:若已完成,且所述目标文件与所述文件头标志相匹配,继续接收当前目标数据之后的所述目标文件的剩余数据,并将所述缓存中的目标数据以及所述目标文件的剩余数据传输到文件输出流。
在本申请的实施例中,若确定文件头匹配操作未完成,则可以继续接收当前目标数据之后的目标文件的N个字节的数据,并将当前目标数据加上N个字节的数据作为新的目标数据保存到缓存中。若确定文件头匹配操作已完成,并且目标文件与预设文件类型的文件头标志相匹配,仍然可以继续接收当前目标数据之后的目标文件的N个字节的数据。但是,由于匹配操作已完成,无需再将接收到的数据保存到缓存中,因此,在将将缓存中的目标数据传输到文件输出流的同时,也可以将接收到的当前目标数据之后的N个字节的数据作为新的目标数据传输到文件输出流。接着,可以继续接收新的目标数据之后的目标文件的数据。可以理解的是,此时,文件头匹配操作已经完成,因此可以将此后接收到的目标文件的剩余数据均传输到文件输出流中。
示例性地,假设N=1,预设字节数量为5,如图7所示,在接收到文件输入流传输的目标文件的第1个字节的目标数据时,此时可以将第1个字节的目标数据保存到缓存中,然后继续逐个字节地传输目标文件。在接收到文件输入流传输的目标文件的第2个字节的目标数据时,首先将确定目标文件是否完成匹配操作,此时未完成匹配操作,因此可以将第2个字节的目标数据保存到缓存中。此时缓存中存在2个字节的目标数据,未大于或等于预设字节数量5,因此继续逐个字节地传输目标文件,以此类推。当传输第5个字节的目标数据时,此时仍然未完成匹配操作,因此可以将第5个字节的目标数据保存到缓存中。此时缓存中存在5个字节的目标数据,大于或等于预设字节数量5,将进行文件头标志的匹配操作,确定缓存中的5个字节的目标数据与5个字节的文件头标志是否匹配。如果匹配,则将继续逐个字节地传输目标文件;如果不匹配,将终止目标文件的传输。如果匹配,此时电子设备的文件检测引擎将接收到第6个字节的目标数据,并且可以确定匹配操作已完成,且目标文件与预设文件类型的文件头标志相匹配,因此,无需再将读取到的第6个字节以及第6个字节之后的目标数据保存到缓存中,而是将缓存中5个字节的目标数据以及第6个字节的目标数据传输到文件输出流,并且继续逐个字节地传输目标文件,接收文件输入流传输的目标文件的第7个字节的目标数据,以此类推,直到将目标文件中所有文件数据均传输到文件输出流。
特别地,需要说明的是,预设字节数量为奇数而N为偶数时,此时缓存中保存的目标数据的字节数量始终为偶数。因此,为了完成对目标文件的文件类型的验证,同样可以从接收目标文件从起始字节开始传输的N个字节的目标数据,并且将该N个字节的目标数据保存到缓存中,确定缓存中的目标数据的字节数量大于还是小于预设字节数量(可以理解的是,由于预设字节数量为奇数而N为偶数,目标数据的字节数量始终不等于预设字节数量,因此只需判断大于和小于)。若缓存中的目标数据的字节数量小于预设字节数量,则继续接收当前目标数据之后的目标文件的N个字节的数据,并将当前目标数据加上N个字节的数据作为新的目标数据保存到缓存中;若缓存中的目标数据的字节数量大于预设字节数量,则确定缓存中的目标数据与文件头标志是否匹配。在确定缓存中的目标数据与文件头标志是否匹配时,可以将缓存的目标数据中靠近起始字节的预设字节数量的文件数据与文件头标志进行匹配。
在一些实施方式中,在文件头匹配操作完成之后,再继续接收当前目标数据之后的所述目标文件的剩余数据的过程中,可以将首先确定当前目标数据之后的目标文件是否还存在剩余数据,在确定还存在剩余数据时,再继续接收当前目标数据之后的剩余数据。而当不存在剩余数据时,即确定已接收到目标文件的所有数据时,可以终止目标文件的传输。可选地,可以将文件检测引擎对应的文件输入流中断。进一步地,还可以将电子设备与客户端之间传输目标文件的传输通道关闭。
由此,当目标文件完成了文件头标志的匹配操作之后,此时已无需再对缓存中的目标数据执行文件头标志的匹配操作,因此无需再将目标文件中表示文件类型的文件头标志以外的其他数据保存到缓存中,这样不仅减少了无用操作,还避免了无效数据的产生,可以节约存储资源。
可选地,在传输目标文件的过程中,可以接收由文件输入流传输的目标文件的文件信息。本申请实施例可以根据目标文件的文件信息确定目标文件的文件字节数量。此外,在目标文件的传输过程中,可以实时统计已接收到的目标文件的文件数据的数据字节数量,确定接收到当前目标数据时的数据字节数量是否大于或等于文件字节数量。若未大于或等于文件字节数量,则表示当前目标数据之后的目标文件还存在剩余数据;若大于或等于文件字节数量,则表示不存在剩余数据。
步骤S540:确定所述缓存中的目标数据与文件头标志是否匹配。若匹配,执行步骤S550;若否,执行步骤S560。
步骤S550:将缓存中的目标数据以及所述当前目标数据之后的所述目标文件的剩余数据传输到文件输出流。
在本申请的实施例中,若缓存中目标数据的字节数量大于或等于了预设字节数量,将确定缓存中的目标数据与文件头标志是否匹配。可选地,可以确定缓存中目标数据的各个字符与文件头标志的各个字符是否一致,若一致,则表示缓存中的目标数据与文件头标志相匹配,即目标文件的文件类型为预设文件类型。
因此,在确定缓存中的目标数据与文件头标志相匹配后,则可以继续传输目标文件,
可选地,在确定缓存中的目标数据与文件头标志相匹配后,可以将缓存中的目标数据传输到文件输出流。进一步地,文件输入流可以继续按照N个字节传输当前目标数据之后的目标文件的剩余数据,当文件检测引擎接收到这些剩余数据之后,可以将剩余数据也传输到文件输出流。
步骤S560:终止所述目标文件的传输。
在一些实施方式中,若缓存中的目标数据与文件头标志不匹配,将中止目标文件的传输。本步骤的具体处理过程可以参考前述实施例中的对应过程,本申请在此不再赘述。
此外,若缓存中的目标数据与文件头标志不匹配,表示目标文件为无效文件,则可以将缓存中的目标数据删除。
可以理解的是,由于本申请在接收到目标文件的文件头时就进行文件类型的匹配操作,当目标文件的文件头与预设文件类型的文件头标志匹配时,继续传输文件;当目标文件的文件头与预设文件类型的文件头标志不匹配时,可以及时终止文件的传输操作。可以理解的是,在文件类型不匹配时,电子设备中仅缓存了目标文件的文件头,可以避免垃圾文件对电子设备内存的占用,节省了不必要的存储资源。
除此之外,相较于先将文件输入流中的目标文件保存到本地硬盘,再从本地硬盘中读取文件的方式,本申请把文件的校验和传输两个操作放在一次文件流(输入流和输出流)的操作过程中完成,减少了对目标文件的重复读取,提升了文件的操作效率。
请参阅图8,示出了本申请一实施例提供的多种文件类型的文件检测方法的流程示意图。在上述任一实施例的基础上,当预设文件类型包括多种文件类型时,所述若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,具体可以包括如下步骤:
步骤S810:将所述多种文件类型对应的各个文件头标志的字节数量分别作为第i预设字节数量,其中,第i预设字节数量小于或等于第i+1预设字节数量,i为1到M之间的整数,M为所述多种文件类型的数量。
在本申请的一些实施方式中,可以按照各种文件类型对应的各个文件头标志的字节数量由小到大的顺序,将接收到的文件数据与各个文件头标志进行匹配,一旦匹配成功,则表示目标文件为电子设备需要的有效文件,可以将匹配结果输出为匹配,并且无需再与未匹配过的其他文件头标志相匹配,直接将当前文件数据及当前文件数据之后的目标文件传输到文件输出流。
具体地,可以将各种文件类型对应的各个文件头标志的字节数量分别作为第i预设字节数量,且第i预设字节数量小于或等于第i+1预设字节数量,i为1到M之间的整数,M为所述多种文件类型的数量,即第1预设字节数量、第2预设字节数量,一直到第M预设字节数量的字节数量大小逐渐增大。
步骤S820:按照i由小到大的顺序确定接收到的所述文件数据的字节数量是否大于或等于第i预设字节数量,当大于或等于第i预设字节数量时,确定此时接收到的所述文件数据与所述第i预设字节数量对应的文件头标志是否匹配,若接收到的所述文件数据与所述第i预设字节数量对应的文件头标志相匹配,则将匹配结果输出为匹配。
步骤S830:若接收到的所述文件数据的字节数量大于或等于第M预设字节数量,且此时接收到的所述文件数据与所有的文件头标志均不匹配,则将匹配结果输出为不匹配。
由前述实施例可知,当预设文件类型包括多种文件类型时,可以按照各种文件类型对应的各个文件头标志的字节数量由小到大的顺序,将接收到的文件数据与各个文件头标志进行匹配,也就是说,可以按照i由小到大的顺序确定接收到的文件数据的字节数量是否大于或等于第i预设字节数量,当大于或等于第i预设字节数量的时候,再确定此时接收到的文件数据是否与第i预设字节数量对应的文件头标志匹配,如果接收到的文件数据与第i预设字节数量对应的文件头标志相匹配,则将匹配结果输出为匹配;如果接收到的文件数据的字节数量大于或等于了第M预设字节数量,并且此时接收到的文件数据与所有的文件头标志均不匹配,则将匹配结果输出为不匹配。
示例性地,当接收到的文件数据的字节数量大于或等于第1预设字节数量时,确定此时接收到的文件数据(此时接收到的文件数据的字节数量为第1预设字节数量)是否与第1预设字节数量对应的文件头标志匹配,如果匹配,则将匹配结果输出为匹配;如果不匹配,则继续接收当前文件数据之后的N个字节的文件数据,直到此时接收到的文件数据的字节数量大于或等于第2预设字节数量,确定此时接收到的文件数据(此时接收到的文件数据的字节数量为第2预设字节数量))是否与第2预设字节数量对应的文件头标志匹配,如果匹配,则将匹配结果输出为匹配;如果不匹配,则继续执行接收当前文件数据之后的N个字节的文件数据的操作以及后续过程,每当接收到的文件数据的字节数量大于或等于某个文件头标志的字节数量时触发文件头标志的匹配操作,且一旦匹配成功,就将匹配结果输出为匹配,除非与所有的文件头标志均匹配不成功(即均不匹配)(此时接收到的文件数据的字节数量大于或等于了第M预设字节数量),才将匹配结果输出为不匹配,表示目标文件不是电子设备需要的有效文件,可以中止文件传输。这样,每当接收到的文件数据的字节数量大于或等于多种文件类型中某个文件头标志的字节数量时触发匹配操作,且一旦匹配成功就将匹配结果输出为匹配,并且完成匹配操作,则无需对每一个文件类型都进行匹配,可以节省操作步骤,提高文件检测效率。
可选地,当接收到起始的N个字节的目标数据后,可以将这N个字节的目标数据保存到电子设备的缓存中。接着,可以按照i由小到大的顺序确定缓存中的目标数据的字节数量是否大于或等于第i预设字节数量。如果大于或等于了第i预设字节数量,则表示根据当前缓存中的目标数据可以确定目标文件的文件类型,可以将当前缓存中的目标数据与第i预设字节数量对应的文件头标志进行匹配;如果没有大于或等于预设字节数量,则继续接收当前目标数据之后的目标文件的N个字节的数据,并将当前目标数据加上N个字节的数据作为新的目标数据保存到缓存中,直到缓存中的目标数据的字节数量大于或等于第i预设字节数量为止。其中,一旦当前缓存中的目标数据与第i预设字节数量对应的文件头标志匹配成功,则会将匹配结果输出为匹配,并且将当前目标数据及当前目标数据之后的目标文件传输到文件输出流,而无需再将接收到的数据保存到缓存中,具体可以参考前述实施例中步骤S610至步骤S630的内容,本实施例在此不再赘述。
在一些实施方式中,在上述任一实施例的基础上,如果预设字节数量的文件数据与预设文件类型的文件头标志不匹配,可以中止目标文件的传输。在另一些实施方式中,在上述任一实施例的基础上,如果预设字节数量的文件数据与预设文件类型的文件头标志不匹配,可以确定接收到的文件数据的字节数量是否大于或等于备用字节数量,其中,备用字节数量为备用文件类型的文件头标志的字节数量,而备用文件类型的文件可以转换为预设文件类型的文件。在接收到的所述文件数据的字节数量大于或等于备用字节数量的情况下,确定接受到的文件数据与备用文件头标志是否匹配,如果接受到的文件数据与备用文件头标志匹配,则将接受到的文件数据以及接受到的文件数据之后的目标文件的剩余数据传输到文件输出流。接着,在检测到目标文件传输完毕的情况下,可以确定目标文件的文件类型为备用文件类型,因此可以将目标文件的文件类型转换为预设文件类型。
示例性地,若电子设备所需要的预设文件类型为pdf,而用户在客户端上传的目标文件为doc或者doc类型的word文档,即使目标文件的文件类型与预设文件类型不一致。但是,由于word文档的文件类型可以转换为pdf,此时则可以将doc或者doc类型设置为备用文件类型,检测到目标文件的文件类型与预设文件类型不一致,而与备用文件类型一致时,可以继续传输目标文件,并且待目标文件传输完毕后,将目标文件的文件类型从备用文件类型转换为预设文件类型。这样,即使用户上传的文件不满足电子设备的需求,但只要上传的文件可以转换为电子设备所需的文件类型,即可完成文件的上传,这样可以大大节省用户重复上传的时间,提高文件的传输效率。
请参阅图9,其示出了本申请一实施例提供的文件检测方法的完整流程示意图。在一些实施方式中,验证类型的文件输入流可以将客户端发送的目标文件的数据传输到文件检测引擎,文件检测引擎对文件类型进行验证的具体过程可以参见如下步骤:
首先,响应于用户从客户端传输的目标文件的文件请求,系统中的电子设备可以创建与该文件请求相对应的原始文件输入流,可以将该原始文件输入流作为前述实施例中的文件输入流,请再次参见图4,接着,可以逐字节地将目标文件的数据从原始文件输入流读取到验证类型的文件输入流中。
示例性地,本申请实施例可以将验证类型的文件输入流作为文件检测引擎,并通过构建InputStream接口来实现该文件检测引擎。示例性地,可以将原始文件输入流和用于验证文件真实类型的文件头标志传入InputStream接口的构造参数中,从而通过InputStream接口实现对文件类型的验证。其中,在InputStream接口中,使用read()方法获取原始文件输入流从客户端读取的文件数据,并将该文件数据传输给文件检测引擎。read()方法获取原始文件输入流从客户端读取的文件数据时,每读取到一个字节的数据即可将该一个字节的数据传输给文件检测引擎,从而将文件输入流中的文件数据传输至文件检测引擎。
在本申请的实施例中,文件检测引擎可以按照上述任一实施例所述的方法对文件输入流传输的文件数据的文件类型进行检测。
首先,文件检测引擎将确定目标文件是否已完成匹配操作,即确定是否已验证目标文件的文件类型。若未完成,则将读取到的目标文件的数据记录到缓存中;若已完成,则在目标文件与预设文件类型的文件头标志相匹配的情况下,则将本次读取到的数据写入到本地文件输出流(相当于前述实施例中所述的文件输出流),通过本地文件输出流例如可以将目标文件的数据保存到电子设备的本地硬盘中。
在将读取到的目标文件的数据记录到缓存之后,确定缓存中保存的已读取数据的字节数量是否大于或等于文件真实类型的字节数量,即是否大于或等于预设文件类型的文件头标志的预设字节数量。若未大于或等于,可以将本次读取数据写入到本地文件输出流,并且判断当前数据之后是否还有目标文件的数据,若当前数据之后还有数据,则继续读取下一个字节的数据并执行后续操作;若当前数据之后不存在数据,则表示目标文件已传输完毕,文件保存成功。
若缓存中保存的已读取数据已大于或等于预设字节数量,将执行目标文件的匹配操作,确定缓存中预设字节数量的已读取数据是否与文件头标志相匹配。若匹配,表示验证通过,可以将本次读取的数据写入到本地文件输出流,则继续读取下一个字节的数据并执行后续操作;若不匹配,则将抛出异常,中止文件写入。
请参阅图10,其示出了本申请另一实施例提供的文件检测方法的完整流程示意图。在另一些实施方式中,文件真实类型可以包括多种文件类型,文件检测引擎对文件类型进行验证时,每当已读取到的字节数量大于或等于某个文件头标志的字节数量时触发文件验证的操作,且一旦验证成功,就将验证结果输出为验证通过,除非与所有的文件头标志均验证不通过(此时接收到的文件数据的字节数量大于或等于了第M预设字节数量,M为文件真实类型中各种文件类型的数量),才将验证结果输出为验证不通过,表示读取的文件不是电子设备需要的有效文件,可以中止写入文件,具体过程可以参见如下步骤:
图10中的执行过程与图9类型,不同之处在于在将文件的数据从原始文件输入流中读取到验证文件输入流之前,可以设置文件真实类型的种类为M种,设置i=1,其中i用来控制对M种文件真实类型的文件头标志的验证,且文件真实类型i的字节数据的字节数量(即文件头标志的字节数量)小于或等于文件真实类型i+1的字节数据的字节数量。接着,在将文件的数据从原始文件输入流中读取到验证文件输入流后,确定文件是否已完成验证,若否,对应于图10中记录已读取的数据的操作,可以就将读取到的目标文件的数据记录到缓存中;若是,并且目标文件的类型与文件真实类型相匹配,则将本次读取到的数据写入到本地文件输出流。
在记录已读取的数据之后,确定已读取的数据字节数量是否大于或等于文件真实类型i的字节数据字节数量,即确定缓存中保存的已读取数据是否大于或等于文件真实类型i的字节数据字节数量。若否,可以将本次读取数据写入到本地文件输出流,并且判断当前数据之后是否还有目标文件的数据,若当前数据之后还有数据,则继续读取下一个字节的数据并执行后续操作;若当前数据之后不存在数据,则表示目标文件已传输完毕,文件保存成功。
若缓存中保存的已读取数据已大于或等于预设字节数量(即已读取的数据字节数量大于或等于文件真实类型i的字节数据字节数量),将执行目标文件的匹配操作,确定缓存中的已读取数据是否与文件真实类型i的字节数据相匹配。若匹配,表示验证通过,可以将本次读取的数据写入到本地文件输出流,则继续读取下一个字节的数据并执行后续操作;若不匹配,则当次验证不通过,如果当次i小于M,将继续验证下一个文件真实类型,将i加1,若当次i等于M,表示所有文件真实类型均验证不通过,将验证结果输出为验证不通过,则将抛出异常,中止文件写入。
综上所述,本实施例提供的文件检测方法,在目标文件通过验证之后,可以从文件输入流中继续读取数据并且直接写入本地文件输出流,相较于先将文件输入流中的目标文件保存到本地硬盘,再从本地硬盘中读取文件的方式,用于记录文件真实类型的文件头标志所占据的缓存非常小,通常不过十几字节,对内存的占用可忽略不计。此外,当验证不通过时,本申请直接中止了文件的读取和写入,可以避免执行无效操作以及产生无用数据。
请参阅图11,示出了本申请实施例提供的文件检测装置的模块框图。具体地,该装置可以运行文件检测引擎,该装置包括:接收单元910、匹配单元920以及传输单元930。
其中,接收单元910用于接收由文件输入流传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据;匹配单元920用于若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量;传输单元930用于若匹配,则将所述预设字节数量的文件数据以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
在一些实施方式中,上述文件检测装置还可以包括:第一终止单元,用于若不匹配,则终止所述目标文件的传输。
在一些实施例中,接收单元910可以包括:接收子单元,用于接收所述目标文件的N个字节的目标数据,所述N个字节的目标数据是由文件输入流从目标文件的起始字节开始传输的数据;缓存单元,用于将所述目标数据保存到缓存中,若缓存中的目标数据的字节数量未大于或等于预设字节数量,继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中。
可选地,在上述实施例的基础上,匹配单元920可以包括:匹配子单元,用于若所述缓存中的目标数据的字节数量大于或等于所述预设字节数量,则确定所述缓存中的目标数据与所述文件头标志是否匹配。
进一步地,上述缓存单元可以包括:第一确定单元,用于确定所述目标文件是否完成所述文件头标志的匹配操作;第一缓存子单元,用于若未完成,则继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中。
更进一步地,上述缓存单元还可以包括:第二缓存子单元,用于若已完成,则在所述目标文件与所述文件头标志相匹配的情况下,继续接收当前目标数据之后的所述目标文件的剩余数据,并将所述缓存中的目标数据以及所述目标文件的剩余数据传输到文件输出流。
更进一步地,上述第二缓存子单元可以包括:第二确定单元,用于确定在当前目标数据之后所述目标文件是否存在剩余数据;剩余数据接收单元,用于若存在,继续接收当前目标数据之后的所述目标文件的剩余数据。
更进一步地,上述剩余数据接收单元可以包括:第二终止单元,用于若不存在,终止所述目标文件的传输。
进一步地,所述预设文件类型可以包括多种文件类型,基于此,上述匹配单元920可以包括:字节数量排线单元,用于将所述多种文件类型对应的各个文件头标志的字节数量分别作为第i预设字节数量,其中,第i预设字节数量小于或等于第i+1预设字节数量,i为1到M之间的整数,M为所述多种文件类型的数量;顺序验证单元,用于按照i由小到大的顺序确定接收到的所述文件数据的字节数量是否大于或等于第i预设字节数量,当大于或等于第i预设字节数量时,确定此时接收到的所述文件数据与所述第i预设字节数量对应的文件头标志是否匹配,若接收到的所述文件数据与所述第i预设字节数量对应的文件头标志相匹配,则将匹配结果输出为匹配。
更进一步地,上述匹配单元920还可以包括:匹配失败单元,用于若接收到的所述文件数据的字节数量大于或等于预设字节数量,且此时接收到的所述文件数据与所有的文件头标志均不匹配,则将匹配结果输出为不匹配。
可选地,上述文件检测装置还可以包括:备用文件类型确定单元,用于若不匹配,则在接收到的所述文件数据的字节数量大于或等于备用字节数量的情况下,确定所述文件数据与备用文件头标志是否匹配,所述备用字节数量为备用文件类型的文件头标志的字节数量,其中,所述备用文件类型的文件可转换为所述预设文件类型的文件;备用文件类型匹配单元,用于若所述文件数据与备用文件头标志匹配,则将所述文件数据以及所述目标文件的剩余数据传输到文件输出流,所述目标文件的剩余数据为所述文件数据之后的目标文件的数据;文件类型转换单元,用于在检测到所述目标文件传输完毕的情况下,将所述目标文件的文件类型转换为所述预设文件类型。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置中模块/单元/子单元/组件的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图12,其示出了本申请实施例提供的电子设备的结构框图。本实施例中的所述电子设备1000可以包括一个或多个如下部件:处理器1010、存储器1020以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器1020中并被配置为由一个或多个处理器1010执行,一个或多个应用程序配置用于执行如前述方法实施例所描述的方法。
其中,电子设备可以为移动、便携式并执行无线通信的各种类型的计算机系统设备中的任何一种。具体的,电子设备可以为移动电话或智能电话(例如,基于iPhone TM,基于Android TM的电话)、便携式游戏设备(例如Nintendo DS TM,PlayStation PortableTM,Gameboy Advance TM,iPhone TM)、膝上型电脑、PDA、便携式互联网设备、音乐播放器以及数据存储设备,其他手持设备以及诸如智能手表、智能手环、耳机、吊坠等,电子设备还可以为其他的可穿戴设备(例如,诸如电子眼镜、电子衣服、电子手镯、电子项链、电子纹身、电子设备或头戴式设备(HMD))。
电子设备还可以是多个电子设备中的任何一个,多个电子设备包括但不限于蜂窝电话、智能电话、智能手表、智能手环、其他无线通信设备、个人数字助理、音频播放器、其他媒体播放器、音乐记录器、录像机、照相机、其他媒体记录器、收音机、医疗设备、车辆运输仪器、计算器、可编程遥控器、寻呼机、膝上型计算机、台式计算机、打印机、上网本电脑、个人数字助理(PDA)、便携式多媒体播放器(PMP)、运动图像专家组(MPEG-1或MPEG-2)音频层3(MP3)播放器,便携式医疗设备以及数码相机及其组合。
在一些情况下,电子设备可以执行多种功能(例如,播放音乐,显示视频,存储图片以及接收和发送电话呼叫)。如果需要,电子设备可以是诸如蜂窝电话、媒体播放器、其他手持设备、腕表设备、吊坠设备、听筒设备或其他紧凑型便携式设备。
可选地,电子设备也可以是服务器,例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,还可以是提供人脸识别、自动驾驶、工业互联网服务、数据通信(如4G、5G等)等专门或平台服务器。
处理器1010可以包括一个或者多个处理核。处理器1010利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器1020内的指令、应用程序、代码集或指令集,以及调用存储在存储器1020内的数据,执行电子设备的各种功能和处理数据。可选地,处理器1010可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器1010可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1010中,单独通过一块通信芯片进行实现。
存储器1020可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器1020可用于存储指令、应用程序、代码、代码集或指令集。存储器1020可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以电子设备在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的处理器1010、存储器1020的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参考图13,其示出了本申请实施例提供的计算机可读存储介质的结构框图。该计算机可读存储介质1100中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1100可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1100包括非易失性计算机可读存储介质(non-transitory computer-readable storage medium)。计算机可读存储介质1100具有执行上述方法中的任何方法步骤的程序代码1110的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1110可以例如以适当形式进行压缩。其中,计算机可读存储介质1100可以是如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、SSD、带电可擦可编程只读存储器(Electrically ErasableProgrammable read only memory,简称EEPROM)或快闪存储器(Flash Memory,简称Flash)等。
在一些实施例中,请参考图14,其示出了本申请实施例提供的一种计算机程序产品的结构框图,该计算机程序产品1200包括计算机程序/指令1210,该计算机程序/指令1210存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序/指令1210,处理器执行该计算机程序/指令1210,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、SSD、Flash)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
本申请提供的文件检测方法、装置、电子设备及存储介质,可以接收文件输入流传输的文件数据,该文件数据为文件输入流从客户端获取的目标文件的数据。若接收到的文件数据的字节数量大于或等于预设文件类型的文件头标志的预设字节数量,确定预设字节数量的文件数据与文件头标志是否匹配。如果匹配,则表示该目标文件为预设文件类型,可以将预设字节数量的文件数据以及预设字节数量的文件数据之后的目标文件的剩余数据传输到文件输出流。由此,在文件上传中接收到标志文件类型的文件头时,即可检测出该文件的文件类型,而无需等到全部文件传输完成,并且当文件类型匹配时则将该文件作为有效的文件继续传输,因此不仅能够提高文件类型的检测效率,还可以及时有效地区分出有效文件。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种文件检测方法,其特征在于,应用于文件检测引擎,所述方法包括:
接收文件输入流传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据;
若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量;
若匹配,则将所述预设字节数量的文件数据,以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
2.根据权利要求1所述的方法,其特征在于,所述接收文件输入流传输的文件数据,若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,包括:
接收所述目标文件的N个字节的目标数据,所述N个字节的目标数据是由文件输入流从目标文件的起始字节开始传输的数据;
将所述目标数据保存到缓存中,若缓存中的目标数据的字节数量小于预设字节数量,继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中;
若所述缓存中的目标数据的字节数量大于或等于所述预设字节数量,则确定所述缓存中的目标数据与所述文件头标志是否匹配。
3.根据权利要求2所述的方法,其特征在于,所述继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中,包括:
确定所述目标文件是否完成所述文件头标志的匹配操作;
若未完成,则继续接收当前目标数据之后的所述目标文件的N个字节的数据,并将当前目标数据加上所述N个字节的数据作为新的目标数据保存到缓存中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若已完成,则在所述目标文件与所述文件头标志相匹配的情况下,继续接收当前目标数据之后的所述目标文件的剩余数据,并将所述缓存中的目标数据以及所述目标文件的剩余数据传输到文件输出流。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
若接收到的所述文件数据的字节数量大于或等于预设字节数量,且此时接收到的所述文件数据与所有的文件头标志均不匹配,则将匹配结果输出为不匹配。
6.根据权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
若不匹配,则在接收到的所述文件数据的字节数量大于或等于备用字节数量的情况下,确定所述文件数据与备用文件头标志是否匹配,所述备用字节数量为备用文件类型的文件头标志的字节数量,其中,所述备用文件类型的文件可转换为所述预设文件类型的文件;
若所述文件数据与备用文件头标志匹配,则将所述文件数据以及所述目标文件的剩余数据传输到文件输出流,所述目标文件的剩余数据为所述文件数据之后的目标文件的数据;
在检测到所述目标文件传输完毕的情况下,将所述目标文件的文件类型转换为所述预设文件类型。
7.一种文件检测装置,其特征在于,所述装置包括:
接收单元,用于接收文件输入流从目标文件传输的文件数据,所述文件数据为所述文件输入流从客户端获取的目标文件的数据;
匹配单元,用于若接收到的所述文件数据的字节数量大于或等于预设字节数量,则确定所述预设字节数量的文件数据与文件头标志是否匹配,所述预设字节数量为预设文件类型的文件头标志的字节数量;
传输单元,用于若匹配,则将所述预设字节数量的文件数据,以及所述预设字节数量的文件数据之后的所述目标文件的剩余数据传输到文件输出流。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至6任一项所述的方法。
10.一种包含指令的计算机程序产品,其特征在于,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210293129.0A CN114710482A (zh) | 2022-03-23 | 2022-03-23 | 文件检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210293129.0A CN114710482A (zh) | 2022-03-23 | 2022-03-23 | 文件检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114710482A true CN114710482A (zh) | 2022-07-05 |
Family
ID=82170939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210293129.0A Pending CN114710482A (zh) | 2022-03-23 | 2022-03-23 | 文件检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114710482A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421288A (zh) * | 2023-12-18 | 2024-01-19 | 云和恩墨(北京)信息技术有限公司 | 数据库数据压缩方法及装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080141373A1 (en) * | 2006-12-12 | 2008-06-12 | Fortinet, Inc. | Detection of undesired computer files in archives |
US20100162400A1 (en) * | 2008-12-11 | 2010-06-24 | Scansafe Limited | Malware detection |
CN101770470A (zh) * | 2008-12-31 | 2010-07-07 | 中国银联股份有限公司 | 一种文件类型识别分析方法及系统 |
CN102571767A (zh) * | 2011-12-24 | 2012-07-11 | 成都市华为赛门铁克科技有限公司 | 文件类型识别方法及文件类型识别装置 |
CN103347092A (zh) * | 2013-07-22 | 2013-10-09 | 星云融创(北京)信息技术有限公司 | 一种识别缓存文件的方法及装置 |
CN104598818A (zh) * | 2014-12-30 | 2015-05-06 | 北京奇虎科技有限公司 | 一种用于虚拟化环境中的文件检测系统及方法 |
US20160197950A1 (en) * | 2015-01-05 | 2016-07-07 | Rangecloud Information Technology Co., Ltd. | Detection system and method for statically detecting applications |
US10242189B1 (en) * | 2018-10-01 | 2019-03-26 | OPSWAT, Inc. | File format validation |
CN111159709A (zh) * | 2019-12-27 | 2020-05-15 | 深信服科技股份有限公司 | 一种文件类型识别方法、装置、设备及存储介质 |
CN111858467A (zh) * | 2020-07-22 | 2020-10-30 | 平安证券股份有限公司 | 基于人工智能的文件数据处理方法、装置、设备和介质 |
CN112256635A (zh) * | 2020-10-19 | 2021-01-22 | 厦门天锐科技股份有限公司 | 一种识别文件类型的方法及装置 |
CN113704184A (zh) * | 2021-08-30 | 2021-11-26 | 康键信息技术(深圳)有限公司 | 一种文件分类方法、装置、介质及设备 |
CN113920519A (zh) * | 2021-10-11 | 2022-01-11 | 国网河北省电力有限公司衡水供电分公司 | 文件检测方法、终端设备及存储介质 |
CN114039774A (zh) * | 2021-11-08 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 一种恶意pe程序的阻断方法、检测方法及装置 |
-
2022
- 2022-03-23 CN CN202210293129.0A patent/CN114710482A/zh active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080141373A1 (en) * | 2006-12-12 | 2008-06-12 | Fortinet, Inc. | Detection of undesired computer files in archives |
US20100162400A1 (en) * | 2008-12-11 | 2010-06-24 | Scansafe Limited | Malware detection |
CN101770470A (zh) * | 2008-12-31 | 2010-07-07 | 中国银联股份有限公司 | 一种文件类型识别分析方法及系统 |
CN102571767A (zh) * | 2011-12-24 | 2012-07-11 | 成都市华为赛门铁克科技有限公司 | 文件类型识别方法及文件类型识别装置 |
CN103347092A (zh) * | 2013-07-22 | 2013-10-09 | 星云融创(北京)信息技术有限公司 | 一种识别缓存文件的方法及装置 |
CN104598818A (zh) * | 2014-12-30 | 2015-05-06 | 北京奇虎科技有限公司 | 一种用于虚拟化环境中的文件检测系统及方法 |
US20160197950A1 (en) * | 2015-01-05 | 2016-07-07 | Rangecloud Information Technology Co., Ltd. | Detection system and method for statically detecting applications |
US10242189B1 (en) * | 2018-10-01 | 2019-03-26 | OPSWAT, Inc. | File format validation |
CN111159709A (zh) * | 2019-12-27 | 2020-05-15 | 深信服科技股份有限公司 | 一种文件类型识别方法、装置、设备及存储介质 |
CN111858467A (zh) * | 2020-07-22 | 2020-10-30 | 平安证券股份有限公司 | 基于人工智能的文件数据处理方法、装置、设备和介质 |
CN112256635A (zh) * | 2020-10-19 | 2021-01-22 | 厦门天锐科技股份有限公司 | 一种识别文件类型的方法及装置 |
CN113704184A (zh) * | 2021-08-30 | 2021-11-26 | 康键信息技术(深圳)有限公司 | 一种文件分类方法、装置、介质及设备 |
CN113920519A (zh) * | 2021-10-11 | 2022-01-11 | 国网河北省电力有限公司衡水供电分公司 | 文件检测方法、终端设备及存储介质 |
CN114039774A (zh) * | 2021-11-08 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 一种恶意pe程序的阻断方法、检测方法及装置 |
Non-Patent Citations (3)
Title |
---|
张润峰;: "基于特征标识的文件类型识别与匹配", 计算机安全, no. 06 * |
郑洁;罗军勇;芦斌;: "基于统计特征值的文件类型识别算法", 计算机工程, no. 01 * |
黄志华;王子凯;徐玉华;李云龙;孙伟;: "文件上传漏洞研究与实践", 信息安全研究, no. 02 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421288A (zh) * | 2023-12-18 | 2024-01-19 | 云和恩墨(北京)信息技术有限公司 | 数据库数据压缩方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810453B2 (en) | Apparatus and method for reproducing handwritten message by using handwriting data | |
US9843667B2 (en) | Electronic device and call service providing method thereof | |
US20170249934A1 (en) | Electronic device and method for operating the same | |
US20200099768A1 (en) | Method and system for sharing data between terminals | |
CN109359091B (zh) | 文件管理方法、装置、终端及计算机可读存储介质 | |
CN103634389A (zh) | 计算设备与移动设备之间的文件传输方法及装置、系统 | |
EP2696603A2 (en) | Apparatus and method for communicating data in mobile device having near field communication module | |
CN111352912A (zh) | 压缩文件处理方法、装置、存储介质、终端以及服务器 | |
CN112312222A (zh) | 视频发送方法、装置和电子设备 | |
CN111028081A (zh) | 资产转移方法、装置、电子设备及存储介质 | |
CN103793454A (zh) | 用于显示web浏览器的加载状态的设备和方法 | |
CN106445743A (zh) | 数据备份传输方法及移动终端 | |
CN104811485A (zh) | 一种资源分享方法 | |
CN114710482A (zh) | 文件检测方法、装置、电子设备及存储介质 | |
CN109286554B (zh) | 社交应用中社交功能解锁方法及装置 | |
CN110909241A (zh) | 信息推荐方法、用户标识推荐方法、装置及设备 | |
KR102405593B1 (ko) | 전자 장치 및 그의 데이터 운용 방법 | |
CN113282590A (zh) | 基于5g消息的接口联调方法及装置 | |
WO2023241613A1 (zh) | 通话建立方法、装置、终端、系统及可读存储介质 | |
CN112291341A (zh) | 文件传输方法、装置和设备 | |
CN111034184A (zh) | 提高视频通话的视频质量 | |
CN105095303B (zh) | 快速链接推送方法及快速链接推送装置 | |
US20220224661A1 (en) | Electronic device for receiving or transmitting rcs data and operation method of electronic device | |
CN114639392A (zh) | 音频处理方法、装置、电子设备及存储介质 | |
CN112346661B (zh) | 数据处理方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |