一种从浏览器向服务器发送文件的方法技术

技术编号:12817178 阅读:55 留言:0更新日期:2016-02-07 10:00
本发明专利技术一种从浏览器向服务器发送文件的方法属于互联网通讯技术领域,本发明专利技术技术方案为从浏览器将程序算法选定的文件的二进制内容以及相关信息以特定的结构顺序组合成为一个整体的二进制数据流,使用XML HTTP向WEB服务器发送该二进制数据流,WEB服务器完成接收数据并保存成本地数据,本发明专利技术的优点为发送的文件可由程序算法决定,而不需要用户逐一指定。

【技术实现步骤摘要】

本专利技术属于互联网通讯
,特别是涉及文件传输

技术介绍
在使用浏览器向网页服务器发送文件时,目前通常使用HTML标记Form元素中的〈input type = 〃file〃>标签。但是〈input type = 〃file〃>标签不能受到JavaScript等脚本语言的驱动,无法使用程序设定发送的具体文件,每一个需要上传的文件都必须由用户在浏览器页面上手动选择。这使得无法确定发送文件的数量时,只能用户手动增加〈inputtype = 〃file〃>标签数量并逐个选择欲上传的文件,比如在页面显示一个“增加”按钮,用户每点击一次,程序在Form元素中增加一个〈input type = 〃file〃>标签,用户再使用新增加的标签指定需要上传的另一个文件。这样用户必须多次点击和选择文件,而不能简化。如果有大量文件需要上传,用户需要逐一增加〈input type = 〃file〃>标签,并选择对应文件。极易出现误操作,漏选/重复选择某些文件,导致漏传/重复传输。
技术实现思路
本专利技术的目的是:由程序算法指定上传的文件和数量,简化用户操作。本专利技术的技术方案是:在浏览器端使用XML HTTP请求传输特定结构的数据流。在服务器端使用通用处理方式解析出传输的文件本身和文件的相关信息。该方法包括以下步骤:1)在浏览器端按需确定并读入需要传输的文件。2)在浏览器端组装一段二进制数据流FullStream,该二进制数据流包含需要发送的文件数据,并具备本专利技术定义的特殊结构。3)使用XML HTTP请求页面服务器发送该二进制流数据;4)页面服务器采用通用方法接收文件。本专利技术的有益效果:本专利技术的有益效果为减少了对用户干预的需求,简化了交互操作,可以避免人致失误。程序算法可过滤出所有需传输的文件,如特定目录下所有文件名以“XX”开头的文件,由程序自动组装成FullStream,直接上传到服务器;而用户不需数清楚符合条件的文件数量,也不需要指定每一个文件名,就能够完成上传操作。简化了操作步骤,避免了错误操作的发生。【附图说明】图1是本专利技术文件传输方法的流数据组成结构示意图图2使用本方法上传指定文件夹下所有dat”文件的流程图其中,1为边界符,2为回车+换行(图中所有换行均显示给出,无隐含字符),3为FormName, 4 为 filename, sufix, 5 为 Somelnformat1n,6 为文件本身的二进制数据。【具体实施方式】本专利技术原理:本专利技术依赖的原理在于浏览器普遍提供XML http请求功能。该功能允许浏览器端的Javascript、VBscript等脚本代码向任意网页发起连接请求,发送文本、二进制数据流。因此在浏览器端以约定的组织结构组装二进制数据流,将文件的二进制内容灌录其中,发送到对应的网页。该网页服务器端就能够解析出二进制数据流中包含的文件内容和其他彳g息。在这一原理的基础上,明确定义二进制数据流的结构,在浏览器端按这一结构组装二进制数据流,在服务器端按这一结构解析二进制数据流,就能够完成文件的传输。而传输的文件本身可以不再必须经过用户逐一指定。下面结合附图对本专利技术做进一步的详细说明。1)在浏览器端按需确定需要传输的文件,并以二进制数据流读入文件,作为数据部分。2)在浏览器端组装一段二进制数据流FullStream,该二进制数据流包含需要发送的文件数据,二进制数据流FullStream由组合数据流CompositeStream、文件数据流FileStream、信息部分Informat1nSegment和数据部分嵌套组合而成,其组合关系如图1所示:a) 二进制数据流FullStream的构建;由“\r\n”对组合数据流CompositeStream进行首尾包裹,得到的结果再以边界符Boundary进行首尾包裹,最后以“一\r\n”结束,即:FullStream = Boundary+” \r\n” +CompositeStream+” \r\n” +Boundary+”一\r\n”其中:\r为回车符;\n为换行符;边界符Boundary为随机产生的以“一”字符开头的一串字符;b)组合数据流CompositeStream由需要发送的文件数据流FileStream组合而成,各文件数据流之间以“ \r\n”、边界符Boundary和“\r\n”连接,即:CompositeStream = FileStream+(” \r\n” +Boundary+” \r\n” +FileStream)*n ;n = 0, 1, 2...其中,n+1代表需要发送的文件数;c)文件数据流FileStream包含两部分:信息部分Informat1nSegment和数据部分ContentSegment,这两部分以“\r\n\r\n”进行连接,即:FileStream =Informat1nSegment+,,\r\n\r\n,,+ContentSegmentd)信息部分 Informat1nSegment 内容为:Content-Disposit1n:form-data ;name = 〃FormName〃 ;filename =,,filename, sufix,,\r\nSomeInformat1n,,其中:FormName是随机产生的一段字符;filename, sufix为可带后缀的文件名称,;SomeInformat1n定义为关于本文件的属性信息,信息部分不包含字符编码类型信息;e)数据部分ContentSegment为步骤1读入的文件二进制数据内容;3)使用XML HTTP请求向接收文件的页面发送二进制流数据FullStream,其中XMLHTTP请求的“boundary”头属性值使用上述边界符Boundary去除首部的“一”;4)页面服务器采用处理Form元素的Post请求的相同方法接收传输的文件。实施例1例如用户要将“(1:\饱?”文件夹下所有“.dat”文件上传服务器。可用如图2所示流程实现。流程首先使用一个〈input type = 〃file〃>标签由Javascript代码获取用户指定的文件夹,如“d:
mp”,然后使用FileSystemObject对象获取“d:
mp”文件夹下的所有dat”文件。使用AD0DB.Stream对象创建二进制流数据,顺序以二进制写入边界符、“\r\nContent-Disposit1n:form-data ;name = 〃FormName〃 ;filename =,,firstfilename.dat,,\r\nSomeInformat1n\r\n\r\n”、 文件firstfilename.dat的二进制文件内容,将第一个文件写入流数据。此后写入“\r\n,,、边界α\r\nContent-Disposit1n: form-data ;name =〃FormName〃 ;filename =,,Secondfilename.dat” \r\nSomeInformat1n\r\n\r\n”、 文件Secondfilename.dat的二进制文件内容,将第二个文件写入流数据。以此类推,直到所有文件都加本文档来自技高网
...

【技术保护点】
一种从浏览器向服务器发送文件的方法,其特征在于,该方法采取以下步骤:1)在浏览器端组装一段二进制数据流,该二进制数据流包含需要发送的文件数据,二进制数据流FullStream由组合数据流CompositeStream、文件数据流FileStream、信息部分InformationSegment和数据部分嵌套组合而成其组合关系如下:a)二进制数据流FullStream的构建;由“\r\n”对组合数据流CompositeStream进行首尾包裹,得到的结果再以边界符Boundary进行首尾包裹,最后以“‑‑\r\n”结束,即:FullStream=Boundary+”\r\n”+CompositeStream+”\r\n”+Boundary+”‑‑\r\n”其中:\r为回车符;\n为换行符;边界符Boundary为随机产生的以“‑‑”字符开头的一串字符;b)组合数据流CompositeStream由需要发送的文件数据流FileStream组合而成,各文件数据流之间以“\r\n”、边界符Boundary和“\r\n”连接,即:CompositeStream=FileStream+(”\r\n”+Boundary+”\r\n”+FileStream)*n;n=0,1,2…其中,n+1代表需要发送的文件数;c)文件数据流FileStream包含两部分:信息部分InformationSegment和数据部分ContentSegment,这两部分以“\r\n\r\n”进行连接,即:FileStream=InformationSegment+”\r\n\r\n”+ContentSegmentd)信息部分InformationSegment内容为:Content‑Disposition:form‑data;name=FormName;filename=”filename.sufix”\r\nSomeInformation”其中:FormName是随机产生的一段字符;filename.sufix为可带后缀的文件名称,;SomeInformation定义为关于本文件的属性信息,信息部分不包含字符编码类型信息;e)数据部分ContentSegment为文件的二进制数据内容;2)使用XML HTTP请求向接收文件的页面发送二进制流数据FullStream,其中XML HTTP请求的“boundary”头属性值使用上述边界符Boundary去除首部的“‑‑”;3)页面服务器用处理Form元素的请求的方法接收需要传输的文件。...

【技术特征摘要】

【专利技术属性】
技术研发人员:周安宁罗小琦龙斌巫鹏伟颜民朱玉洪
申请(专利权)人:成都飞机设计研究所
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1