文件传输方法、服务器、客户端及网络传输系统的制作方法

文档序号:7758706阅读:156来源:国知局
专利名称:文件传输方法、服务器、客户端及网络传输系统的制作方法
技术领域
本发明涉及计算机信息处理领域,尤其涉及一种文件传输方法、服务器、客户端及网络传输系统。
背景技术
下载大数据量文件是桌面应用程序、Web应用经常遇到的需求。现有下载方法是在服务器端先生成已格式化的数据量较大的数据文件,再对格式化好的数据文件进行压缩,最后用户端下载该压缩文件。当然也可以不压缩,直接下载服务器端已格式化好的数据文件在实现上述文件下载的过程中,发明人发现现有技术中在遇到数据量巨大时,由于受到服务器资源及网络环境、并发下载等条件制约,服务器端经常会出现生成超时、内存溢出等问题。究其原因,主要是服务器端数据格式化所需的CPU、I0和内存资源会随着数据记录数、单条记录尺寸的增大,呈非线性的增长,这样很容易就超过服务器应用程序执行命令所设定的最长时间限制。

发明内容
本发明的实施例提供一种文件传输方法、服务器、客户端及网络传输系统,能够避免服务器端出现生成超时、内存溢出等问题,提高了下载效率。为达到上述目的,本发明的实施例采用如下技术方案本发明实施例提供一种文件传输方法,包括服务器端生成裸数据文件和格式标记符文件;所述服务器端根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;客户端下载所述裸数据文件、所述格式标记符文件和所述解析模板文件;所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。本发明实施例还提供一种服务器单元,包括生成模块,用于生成裸数据文件和格式标记符文件;根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件。本发明实施例还提供一种客户端单元,包括下载模块,用于下载裸数据文件、格式标记符文件和解析模板文件;运行模块,用于利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。本发明实施例还提供一种网络传输系统,包括服务器,用于生成裸数据文件和格式标记符文件;根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;
客户端,从所述服务器下载所述裸数据文件、所述格式标记符文件和所述解析模板文件,利用本地程序运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。本发明实施例提供的文件传输方法、服务器、客户端及网络传输系统,服务器端生成裸数据文件和格式标记符文件,根据格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;客户端下载这些文件后,利用本地程序运行解析模板文件,根据格式标记符文件中的标记,对裸数据文件进行解析和格式化,得到格式化后的文件。本发明实施例将文件的格式化操作改在客户端进行,这样一来,由于服务器端不再进行格式化操作,即使遇到数据量巨大的数据文件,也不会出现如生成超时、内存溢出等错误,从而减少了传输数据的生成时间,缩减了传输数据的文件大小,提高了传输效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术的文件传输方法的流程框图;图2为本发明实施例提供的文件传输方法的流程框图;图3为本发明实施例提供的服务器单元的结构示意框图;图4为本发明实施例提供的服务器单元的另一结构示意框图;图5为本发明实施例提供的客户端单元的结构示意框图;图6为本发明实施例提供的客户端单元的另一结构示意框图;图7为本发明实施例提供的网络传输系统的结构示意框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。现有技术的数据传输方法,如图1所示,包括以下步骤S101、服务器端将要传输的数据文件进行格式化,得到格式化后的文件。S102、服务器端将格式化后的文件进行压缩,得到文件压缩包。S103、客户端从服务器端下载该文件压缩包,下载到本地后进行解压缩,得到文件。本发明实施例提供的文件传输方法,如图2所示,该方法步骤包括S201、服务器端生成裸数据文件和格式标记符文件。本步骤S201生成裸数据文件和格式标记符文件的基本要求是生成时消耗的CPU、I0和内存资源要尽量少,文件的体积要尽量小,若需压缩,其压缩比要高。而文本文件正好符合这些要求。因此,裸数据文件可以为未经格式化的文本文件,用于保存下载内容记录的文本数据,可以由服务器批量生成。需要说明的是,在此文本文件是一个最优的选择,但本发明实施例并不限于此,采用其他格式也是可以的,例如XML等。格式标记符文件,也可以为文本文件,用于定义裸数据文件中的记录分隔标记、记录的字段属性值分隔标记和记录的字段属性含义标记。在裸数据文件中,含有多条记录,每条记录又分别含有多个字段。例如,在图书书目这一裸数据文件中,会有多条书目记录,“记录分隔标记”用于标记每两条记录之间的分隔;“记录的字段属性值分隔标记”用于标记每条记录中例如书名和作者之间的分隔;“记录的字段属性含义标记”用于标记该字段是书名还是作者等。当然,格式标记符文件中至少要包括这三项内容,随着记录内容的复杂,也可以增加相应的标记符。同样,在此采用文本文件只是一个最优的选择,本发明实施例并不限于此,采用其他格式也是可以的,例如XML等。至此,本步骤S201由于比现有技术的生成带格式的数据文件所消耗的CPU、IO和内存要少的多,所以能够保证高效率的生成。S202、服务器端根据格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件。对于解析模板文件的生成,一种常用的方式为,利用客户端程序“启动后自动加载程序”功能,来制作此类模板。例如利用Excel的VB、Lotus Notes的LotusScript等制作。另外,在实际使用中,此类解析模板文件可以事先准备好,用到时直接拷贝,以节省生成时间。下面利用VB代码给出一个解析模板文件的示例Do Until EOF(FNuml)Line Input#FNuml, InputLineInputCounter = InputCounter+1RowsThisSheet = RowsThisSheet+1If C_UPDATE_STATUSBAR_EVERY_N_RECORDS > O ThenIf InputCounter Mod C_UPDATE_STATUSBAR_EVERY_N_RECORDS = OThenApplication. StatusBar = C_STATUSBAR_TEXT &_Format (InputCounter, “ #,##0" )&〃 条,请耐心等待......“End IfEnd IfIf SplitChar = vbNulIString ThenWS. Cells (RowNdx, C_START_C0LUMN). Value = InputLineElseArr = Split (Expression: = InputLine, delimiter: = SplitChar,limit: = —1,Compare: = vbBinaryCompare)If CurrentFenLeiCodeOMid (Replace (Arr (FenLei_Col_Index)," " ),1, DThenSheetNumber = 1SheetNumber2 = SheetNumber2+l
If C_TEMPLATE_SHEET_NAME = vbNulIString ThenSet WS = Activefforkbook. Worksheets. Add(after: = WS)ElseActive Workbook. Worksheets(C_TEMPLATE_SHEET_NAME) · Copy
after:= WSEnd IfWS. Name = C_SHEET_NAME_PREFIX & Mid(R印lace(Arr (FenLei_Col_Index), 〃〃‘ , 〃“ ),1,1)&Format (SheetNumber, ‘‘ 0")For Colndx = LBound(Arr)To 3WS. Columns(Colndx+C_START_C0LUMN). NumberFormatLocal="WS. Columns(Colndx+C_START_C0LUMN). Style. Font. Size = 10Next CoIndxOn Error Go To ORowNdx = C_START_R0ff_LATER_PAGESRowsThisSheet = OCurrentFenLeiCode = Mid (Replace (Arr (FenLei_Col_Index), ""'," " ),1,1)End IfFor Colndx = LBound(Arr)To UBound(Arr)If Colndx+C_START_COLUMN <= WS. Columns. Count ThenWS. Cells(RowNdx, Colndx+C_START_COLUMN). Value =Arr (Colndx)ElseTruncatedCount = TruncatedCount+1Exit ForEnd IfNext ColndxEnd If' SplitChar = vbNullStringRowNdx = RowNdx+1If (RowNdx > Rows. Count) Or (RowNdx > MaxRowsPerSheet + 1)Or(RowsThisSheet > MaxRowsPerSheet-1)ThenSheetNumber = SheetNumber+1SheetNumber2 = SheetNumber2+lIf C_TEMPLATE_SHEET_NAME = vbNullString ThenSet WS = Activefforkbook. Worksheets. Add(after: = WS)Else
Active Workbook. Worksheets(C_TEMPLATE_SHEET_NAME). Copy
after: = WSSet WS = Active Workbook. ActiveSheetEnd IfWS. Name = C_SHEET_NAME_PREFIX & CurrentFenLeiCode & Format(SheetNumber, “ 0〃 )For Colndx = LBound(Arr)To 3WS. Columns^olndx+C_START_C0LUMN). NumberFormatLocal ="WS. Columns(Colndx+C_START_C0LUMN). Style. Font.Size = 10Next ColndxOn Error Go To ORowNdx = C_START_ROff_LATER_PAGESRowsThisSheet = OEnd IfLoopClose FNuml上述VB代码的处理逻辑,简单说明如下1、根据格式标记符文件中的记录分隔标记循环遍历裸数据文件的每一行;1. 1、处理每一行记录的字段属性值;A、过滤行可能的特殊字符;B、依据字段属性值分隔标记,抽取每一行记录的各个字段属性值;C、将字段属性值填充到指定行、列中;1. 2当记录数大于每ー个Sheet能存放的最大行数吋,则启用新的Sieet ;2结束处理行。上面为用VB代码给出的ー个解析模板的示例,本发明实施例并不限于VB语言,还 可以用其他方式设置解析模板文件。进ー步地,在实际使用中,一般服务器端都会将生成好的文件进行压縮,即将裸数 据文件、格式标记符文件和解析模板文件压缩打包,以便于客户端进行下载。S203、客户端下载裸数据文件、格式标记符文件和解析模板文件。当客户端下载的是压缩后的压缩包吋,先对其进行解压縮,得到裸数据文件、格式 标记符文件和解析模板文件。S204、客户端利用本地程序,运行解析模板文件,根据格式标记符文件中的标记, 对裸数据文件进行解析和格式化,得到格式化后的文件。客户端利用本地程序,运行解析模板文件吋,程序可自动加载格式标记符文件和 裸数据文件,并根据格式标记符文件中的标记,对裸数据文件进行解析和格式化,得到格式 化后的文件,并保存格式化后的文件。由于本步骤S204只消耗本地客户端的CPU、10和内存资源,同时由于逐条处理不 受时间限制。结合步骤S201至步骤S203,整个面向用户客户端的数据传输过程,对用户而言,不会产生如“生成超时”、“内存溢出”等错误。下面以客户端要得到格式化后的Excel数据文件为例,参考表1,说明在服务器端本发明与现有技术的不同。在表1中,传统方法为Opendatasource,是微软SQLServer数据库服务应用程序自带的生成Excel函数。传统方法在服务器端直接生成格式化后的Excel文件,并进行压缩。商务智能为SSIS Excel Destination,SSIS是微软SQLServer数据库集成服务组件,可以在其中设置生成Excel的工作流,并执行工作流。商务智能在服务器端直接生成格式化后的Excel文件,并进行压缩。本发明实施例在服务器端生成裸数据文件、格式标记符文件和解析模板文件。解析模板文件使用Excel的VBA制作。
权利要求
1.一种文件传输方法,其特征在于,包括服务器端生成裸数据文件和格式标记符文件;所述服务器端根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;客户端下载所述裸数据文件、所述格式标记符文件和所述解析模板文件;所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。
2.根据权利要求1所述的文件传输方法,其特征在于,所述格式标记符文件包括定义所述裸数据文件中的记录分隔标记、记录的字段属性值分隔标记和记录的字段属性含义标记。
3.根据权利要求1所述的文件传输方法,其特征在于,所述裸数据文件和所述格式标记符文件为文本文件。
4.根据权利要求1所述的文件传输方法,其特征在于,所述服务器端将生成的所述裸数据文件、所述格式标记符文件和所述解析模板文件压缩,以便于所述客户端下载。
5.根据权利要求1所述的文件传输方法,其特征在于,所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件包括所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,逐条对所述裸数据文件进行解析和格式化,得到格式化后的文件。
6.根据权利要求1所述的文件传输方法,其特征在于,所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件包括所述客户端利用本地程序,运行所述解析模板文件时,自动加载所述格式标记符文件和所述裸数据文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。
7.一种服务器单元,其特征在于,包括生成模块,用于生成裸数据文件和格式标记符文件;根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件。
8.根据权利要求7所述的服务器单元,其特征在于,所述服务器单元还包括压缩模块,用于将所述生成模块生成的所述裸数据文件、所述格式标记符文件和所述解析模板文件进行压缩,得到压缩文件包。
9.一种客户端单元,其特征在于,包括下载模块,用于下载裸数据文件、格式标记符文件和解析模板文件;运行模块,用于利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。
10.根据权利要求9所述的客户端单元,其特征在于,所述客户端单元还包括解压缩模块,用于对所述下载模块下载的压缩文件包文件进行解压缩。
11.一种网络传输系统,其特征在于,包括服务器,用于生成裸数据文件和格式标记符文件;根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;客户端,从所述服务器下载所述裸数据文件、所述格式标记符文件和所述解析模板文件,利用本地程序运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。
全文摘要
本发明实施例提供一种文件传输方法、服务器、客户端及网络传输系统,涉及计算机信息处理领域,能够避免服务器端出现生成超时、内存溢出等问题,提高了下载效率。其方法为服务器端生成裸数据文件和格式标记符文件;所述服务器端根据所述格式标记符文件,结合客户端本地读取已格式化数据所需程序的解析功能,生成解析模板文件;客户端下载所述裸数据文件、所述格式标记符文件和所述解析模板文件;所述客户端利用本地程序,运行所述解析模板文件,根据所述格式标记符文件中的标记,对所述裸数据文件进行解析和格式化,得到格式化后的文件。本发明实施例用于文件下载。
文档编号H04L29/06GK102387120SQ20101026913
公开日2012年3月21日 申请日期2010年8月31日 优先权日2010年8月31日
发明者史风全 申请人:北京方正阿帕比技术有限公司, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1