一种文件上传的方法、存储介质和服务器与流程

文档序号:16900545发布日期:2019-02-19 17:56阅读:264来源:国知局
一种文件上传的方法、存储介质和服务器与流程

本发明涉及计算机技术领域,尤其涉及一种文件上传的方法、存储介质和服务器。



背景技术:

目前,用户于客户端上传文件至服务器时,通常只是简单地将文件上传至服务器的指定目录,服务器并不会对上传的文件进行管控。这就导致服务器可能接收到一些不安全或者过大的文件,给服务器正常的文件管理带来不便。



技术实现要素:

有鉴于此,本发明实施例提供了一种文件上传的方法、存储介质和服务器,能够对用户上传的文件进行管控,为服务器的文件管理提供了便利。

本发明实施例的第一方面,提供了一种文件上传的方法,包括:

获取待上传文件;

从预先构建的上传组件的功能配置文件中提取条件配置参数;

根据所述条件配置参数确定文件上传条件;

若所述待上传文件符合所述文件上传条件,则通过所述上传组件将所述待上传文件上传至服务器;

若所述待上传文件不符合所述文件上传条件,则拒绝将所述待上传文件上传至服务器。

本发明实施例的第二方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如本发明实施例的第一方面提出的文件上传的方法的步骤。

本发明实施例的第三方面,提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:

获取待上传文件;

从预先构建的上传组件的功能配置文件中提取条件配置参数;

根据所述条件配置参数确定文件上传条件;

若所述待上传文件符合所述文件上传条件,则通过所述上传组件将所述待上传文件上传至服务器;

若所述待上传文件不符合所述文件上传条件,则拒绝将所述待上传文件上传至服务器。

本发明实施例提出的文件上传的方法包括:获取待上传文件;从预先构建的上传组件的功能配置文件中提取条件配置参数;根据所述条件配置参数确定文件上传条件;若所述待上传文件符合所述文件上传条件,则通过所述上传组件将所述待上传文件上传至服务器;若所述待上传文件不符合所述文件上传条件,则拒绝将所述待上传文件上传至服务器。本发明通过构建上传组件的功能配置文件,能够设置相应的文件上传条件,只有符合文件上传条件的文件才能顺利上传至服务器,从而实现文件上传的管控,为服务器的文件管理提供了便利。

附图说明

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

图1是本发明实施例提供的一种文件上传的方法的第一个实施例的流程图;

图2是本发明实施例提供的一种文件上传的方法的第二个实施例的流程图;

图3是本发明实施例提供的一种文件上传的装置的一个实施例的结构图;

图4是本发明实施例提供的一种服务器的示意图。

具体实施方式

本发明实施例提供了一种文件上传的方法、存储介质和服务器,能够对用户上传的文件进行管控,为服务器的文件管理提供了便利。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例中一种文件上传的方法的第一个实施例包括:

101、获取待上传文件;

待上传文件是存储于客户端,准备上传至服务器端的文件,可以是各种类型的文件,比如文档、音视频文件、软件安装包等。

102、从预先构建的上传组件的功能配置文件中提取条件配置参数;

在获取待上传文件之后,从预先构建的上传组件的功能配置文件中提取条件配置参数。该上传组件具有功能配置文件,通过设置该功能配置文件中的条件配置参数,能够构建文件上传条件,以实现对文件上传、下载的管理监控。

103、根据所述条件配置参数确定文件上传条件;;

在提取出条件配置参数之后,根据所述条件配置参数确定文件上传条件。具体的文件上传条件可以包括:文件类型限制、文件大小限制、文件安全校验以及文件存储目录的设置等。

在实际应用中,所述上传组件可以是jar格式的组件。jar格式以流行的zip格式为基础,与zip文件不同的是,jar文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序。通过将文件上传、下载功能封装成一个jar组件,用户可以方便地调用该组件的api接口,实现文件的上传和下载操作。另外,该jar格式的上传组件具有properties格式的功能配置文件。java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容格式是“键=值”的格式。

在一个实施例中,功能配置文件的某个模块test展示的条件配置参数如下:

test.config={"suffix":".jpeg|.jpg|.bmp|.gif|.txt|.part|.json|.png","uploadsizelimit":"2048","isdeletecontroll":"on""deleteaccessmethod":"com.paic.esales.nas.uploadtest.testaccess","rootname":"filehandle.pub.nas.upload.path","uploaddirformat":"yyyymm","naspath":"test","handletype":"nas"}

其中,suffix表示模块只允许访问.jpeg|.jpg|.bmp|.gif|.txt|.part|.json|.png这些类型的文件;uploadsizelimit表示文件大小的上限;isdeletecontroll表示是否能够删除文件;deleteaccessmethod表示文件删除权限的控制方法,用户可以自行添加业务逻辑;rootname表示文件存储的根目录;upload.path表示文件上传目录;uploaddirformat表示上传文件是否启用日期目录,即文件上传时新建以日期命名的目录;naspath表示文件存储的相对目录;handletype表示文件的存储方式,可支持nas卷、iobs、obs、cms等存储系统。

可见,通过修改功能配置文件的各个条件配置参数,能够制定各类的文件上传条件。另外,还可以将所述功能配置文件的内容通过异步线程加载到缓存中,从而实现在不必重启服务的条件下灵活更改配置文件的内容。

104、判断所述待上传文件是否符合所述文件上传条件;

在确定文件上传条件之后,判断所述待上传文件是否符合所述文件上传条件。一般根据待上传文件的各类属性参数判断其是否符合条件,比如文件大小、文件类型等。

可选的,步骤104可以包括:

(1)获取所述待上传文件的后缀名;

(2)根据所述后缀名判断所述待上传文件是否属于允许上传的文件类型;

(3)若所述待上传文件属于允许上传的文件类型,则判定所述待上传文件符合所述文件上传条件;

(4)若所述待上传文件不属于允许上传的文件类型,则判定所述待上传文件不符合所述文件上传条件。

比如,若所述功能配置文件限制客户端只能上传jpeg,jpg,bmp,gif,txt和png这些类型的文件,则获取待上传文件的后缀名,若该后缀名属于这些类型文件中的一种,则表明待上传文件属于允许上传的文件类型,否则表明待上传文件不属于允许上传的文件类型。

更进一步的,若所述待上传文件属于允许上传的文件类型,则在判定所述待上传文件符合所述文件上传条件之前,还可以包括:

(a)提取所述待上传文件的字节流;

(b)检测所述字节流中是否具有与所述后缀名对应的文件头标识;

(c)若所述字节流中具有与所述后缀名对应的文件头标识,则判定所述待上传文件符合所述文件上传条件;

(d)若所述字节流中没有与所述后缀名对应的文件头标识,则判定所述待上传文件不符合所述文件上传条件。

某些非法用户在获知允许上传的文件类型之后,有可能恶意修改待上传文件的后缀名,使其成为允许上传的文件后缀名。本申请通过提取待上传文件字节流中的文件头标识,判断其是否与后缀名对应的文件头标识,可以很好地解决这类问题。

比如,以下为一些后缀名和文件头的对应关系:

1.jpeg

-文件头标识(2bytes):$ff,$d8(soi)(jpeg文件标识)

-文件结束标识(2bytes):$ff,$d9(eoi)

2.png

-文件头标识(8bytes)89504e470d0a1a0a

3.gif

-文件头标识(6bytes)4749463839(37)61

4.bmp

-文件头标识(2bytes)424d

5.pcx

-文件头标识(1bytes)0a

6.giff

-文件头标识(2bytes)4d4d或4949

7.ico

-文件头标识(8bytes)0000010001002020

8.cur

-文件头标识(8bytes)0000020001002020

9.iff

-文件头标识(4bytes)464f524d

10.ani

-文件头标识(4bytes)52494646

举个例子,若所述待上传文件的后缀名为bmp,则检测所述待上传文件的字节流中是否具有文件头标识424d,若具有该文件头标识,则判定所述待上传文件符合所述文件上传条件,否则判定所述待上传文件不符合所述文件上传条件。

可选的,步骤104可以包括:

(1)对所述待上传文件进行病毒扫描;

(2)若所述病毒扫描通过,且所述待上传文件的文件大小小于所述功能配置文件限定的上限值,则判定所述待上传文件符合所述文件上传条件;

(3)若所述病毒扫描未通过,或者所述待上传文件的文件大小大于所述功能配置文件限定的上限值,则判定所述待上传文件不符合所述文件上传条件。

通过对待上传文件进行病毒扫描以及设置文件大小限制,能够避免含有病毒的文件和过大的文件上传至服务器。需要说明的是,本申请上述提出的各类文件上传条件既可以结合采用,也可以单独采用。

若所述待上传文件符合所述文件上传条件,则执行步骤105;若所述待上传文件不符合所述文件上传条件,则执行步骤106。

105、通过所述上传组件将所述待上传文件上传至服务器;

所述待上传文件符合所述文件上传条件,此时通过所述上传组件将所述待上传文件上传至服务器。具体的,客户端可以调用该上传组件的api接口,从而与服务器端建立连接,然后上传所述待上传文件。

进一步的,步骤105可以包括:

(1)从所述功能配置文件中提取文件上传参数,所述文件上传参数包含文件上传至服务器的根目录以及用于启动日期目录的标记位;

(2)若所述标记位为第一数值,则在所述根目录下创建以当天日期命名的文件夹,并将所述待上传文件保存至所述文件夹内;

(3)若所述标记位为第二数值,则将所述待上传文件保存至所述根目录下预先创建的默认文件夹内。

在上传文件时,可以从所述功能配置文件中提取文件上传参数,所述文件上传参数包含文件上传至服务器的根目录以及用于启动日期目录的标记位。若所述标记位为第一数值(比如1),则在所述根目录下创建以当天日期命名的文件夹,并将所述待上传文件保存至所述文件夹内;若所述标记位为第二数值(比如0),则将所述待上传文件保存至所述根目录下预先创建的默认文件夹内。通过这样设置,能够进一步提高服务器管理文件的便利。

106、拒绝将所述待上传文件上传至服务器。

所述待上传文件不符合所述文件上传条件,此时拒绝将所述待上传文件上传至服务器。

本发明实施例提出的文件上传的方法包括:获取待上传文件;从预先构建的上传组件的功能配置文件中提取条件配置参数;根据所述条件配置参数确定文件上传条件;若所述待上传文件符合所述文件上传条件,则通过所述上传组件将所述待上传文件上传至服务器;若所述待上传文件不符合所述文件上传条件,则拒绝将所述待上传文件上传至服务器。本发明通过构建上传组件的功能配置文件,能够设置相应的文件上传条件,只有符合文件上传条件的文件才能顺利上传至服务器,从而实现文件上传的管控,为服务器的文件管理提供了便利。

请参阅图2,本发明实施例中一种文件上传的方法的第二个实施例包括:

201、获取待上传文件;

202、从预先构建的上传组件的功能配置文件中提取条件配置参数;

203、根据所述条件配置参数确定文件上传条件;

204、判断所述待上传文件是否符合所述文件上传条件;

步骤201-204与步骤101-104相同,具体可参照步骤101-104的相关说明。若所述待上传文件符合所述文件上传条件,则执行步骤205-208;若所述待上传文件不符合所述文件上传条件,则执行步骤209。

205、获取当前于客户端登录的用户的身份标识;

所述待上传文件符合所述文件上传条件,此时获取当前于客户端登录的用户的身份标识。具体的,该身份标识可以是用户登录的用户名、员工号等用于表征身份信息的标识。

206、判断当前时间是否属于所述身份标识对应的文件上传时间;

在获得所述身份标识之后,判断当前时间是否属于所述身份标识对应的文件上传时间。若当前时间属于所述身份标识对应的文件上传时间,则执行步骤207;若当前时间不属于所述身份标识对应的文件上传时间,则执行步骤208。

在业务系统中,来自不同部门的多个用户都需要上传文件至服务器。为了防止大量用户集中上传文件,造成数据传输压力大的问题,可以分别为每个部门预设规定的文件上传时间,若当前时间属于该部门的文件上传时间,则该部门的用户可以立即上传文件至服务器,否则延迟或拒绝上传文件的操作。比如,业务系统总共有a-g共7个部门,则可以将每个星期分为7天,每天只允许其中的某个部门上传文件。

进一步的,本实施例还可以包括以下步骤:

(1)分别统计各个身份标识对应的用户在预设周期内上传文件的总数量和/或总大小;

(2)根据各个身份标识对应的用户在预设周期内上传文件的总数量和/或总大小调整各个身份标识对应的文件上传时间。

具体的,对于某个身份标识来说,可以统计一个月内该身份标识对应用户上传文件的总数量/总大小,以及所有用户上传文件的总数量/总大小,将前者除以后者,得到该身份标识对应用户上传文件的数量/大小比例,然后为该身份标识分配与该比例匹配的文件上传时间。比如,部门a用户上传文件数量的比例为30%,部门b用户上传文件数量的比例为10%,部门c用户上传文件数量的比例为60%,则可以将一个周期的时间(比如一个月或一个星期)按照时长分配为30%、10%和60%三部分,分别对应于部门a、b和c的用户。

207、通过所述上传组件将所述待上传文件上传至服务器;

当前时间属于所述身份标识对应的文件上传时间,此时通过所述上传组件将所述待上传文件上传至服务器。

208、等待所述身份标识对应的文件上传时间到达后,再通过所述上传组件将所述待上传文件上传至服务器;

当前时间不属于所述身份标识对应的文件上传时间,此时等待所述身份标识对应的文件上传时间到达后,再通过所述上传组件将所述待上传文件上传至服务器。

209、拒绝将所述待上传文件上传至服务器。

所述待上传文件不符合所述文件上传条件,此时拒绝将所述待上传文件上传至服务器。

本实施例在判定待上传文件符合文件上传条件之后,获取当前于客户端登录的用户的身份标识,进一步判断当前时间是否属于所述身份标识对应的文件上传时间,若当前时间属于所述身份标识对应的文件上传时间,则立即通过所述上传组件将所述待上传文件上传至服务器;若当前时间不属于所述身份标识对应的文件上传时间,则等待所述身份标识对应的文件上传时间到达后,再通过所述上传组件将所述待上传文件上传至服务器。与本发明的第一个实施例相比,有效缓解了服务器端的文件传输压力。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

上面主要描述了一种文件上传的方法,下面将对一种文件上传的装置进行详细描述。

请参阅图3,本发明实施例中一种文件上传的装置的一个实施例包括:

文件获取模块301、用于获取待上传文件;

条件配置参数提取模块302、用于从预先构建的上传组件的功能配置文件中提取条件配置参数;

文件上传条件确定模块303、用于根据所述条件配置参数确定文件上传条件;

文件上传模块304、用于若所述待上传文件符合所述文件上传条件,则通过所述上传组件将所述待上传文件上传至服务器;

拒绝上传模块305、用于若所述待上传文件不符合所述文件上传条件,则拒绝将所述待上传文件上传至服务器。

进一步的,所述文件上传模块可以包括:

后缀获取单元,用于获取所述待上传文件的后缀名;

文件类型确定单元,用于根据所述后缀名判断所述待上传文件是否属于允许上传的文件类型;

第一判定单元,用于若所述待上传文件属于允许上传的文件类型,则判定所述待上传文件符合所述文件上传条件;

第二判定单元,用于若所述待上传文件不属于允许上传的文件类型,则判定所述待上传文件不符合所述文件上传条件。

更进一步的,所述文件上传模块还可以包括:

字节流提取单元,用于提取所述待上传文件的字节流;

检测单元,用于检测所述字节流中是否具有与所述后缀名对应的文件头标识;

第三判定单元,用于若所述字节流中具有与所述后缀名对应的文件头标识,则判定所述待上传文件符合所述文件上传条件;

第四判定单元,用于若所述字节流中没有与所述后缀名对应的文件头标识,则判定所述待上传文件不符合所述文件上传条件。

进一步的,所述文件上传模块可以包括:

病毒扫描单元,用于对所述待上传文件进行病毒扫描;

第五判定单元,用于若所述病毒扫描通过,且所述待上传文件的文件大小小于所述功能配置文件限定的上限值,则判定所述待上传文件符合所述文件上传条件;

第六判定单元,用于若所述病毒扫描未通过,或者所述待上传文件的文件大小大于所述功能配置文件限定的上限值,则判定所述待上传文件不符合所述文件上传条件。

进一步的,所述文件上传模块可以包括:

身份标识获取单元,用于获取当前于客户端登录的用户的身份标识;

第一文件上传单元,用于若当前时间属于所述身份标识对应的文件上传时间,则通过所述上传组件将所述待上传文件上传至服务器;

第二文件上传单元,用于若当前时间不属于所述身份标识对应的文件上传时间,则等待所述身份标识对应的文件上传时间到达后,再通过所述上传组件将所述待上传文件上传至服务器。

更进一步的,所述文件上传模块还可以包括:

统计单元,用于分别统计各个身份标识对应的用户在预设周期内上传文件的总数量和/或总大小;

文件上传时间调整单元,用于根据各个身份标识对应的用户在预设周期内上传文件的总数量和/或总大小调整各个身份标识对应的文件上传时间。

进一步的,所述条件配置参数包含文件上传至服务器的根目录以及用于启动日期目录的标记位,所述文件上传模块可以包括:

第一文件保存单元,用于若所述标记位为第一数值,则在所述根目录下创建以当天日期命名的文件夹,并将所述待上传文件保存至所述文件夹内;

第二文件保存单元,用于若所述标记位为第二数值,则将所述待上传文件保存至所述根目录下预先创建的默认文件夹内。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如图1或图2表示的任意一种文件上传的方法的步骤。

本发明实施例还提供一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如图1或图2表示的任意一种文件上传的方法的步骤。

图4是本发明一实施例提供的服务器的示意图。如图4所示,该实施例的服务器4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机可读指令42。所述处理器40执行所述计算机可读指令42时实现上述各个文件上传的方法实施例中的步骤,例如图1所示的步骤101至106。或者,所述处理器40执行所述计算机可读指令42时实现上述各装置实施例中各模块/单元的功能,例如图3所示模块301至305的功能。

示例性的,所述计算机可读指令42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令42在所述服务器4中的执行过程。

所述服务器4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器4可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图4仅仅是服务器4的示例,并不构成对服务器4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器4还可以包括输入输出设备、网络接入设备、总线等。

所述处理器40可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器41可以是所述服务器4的内部存储单元,例如服务器4的硬盘或内存。所述存储器41也可以是所述服务器4的外部存储设备,例如所述服务器4上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器41还可以既包括所述服务器4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机可读指令以及所述服务器所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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