主权项 |
一种从浏览器向服务器发送文件的方法,其特征在于,该方法采取以下步骤: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元素的请求的方法接收需要传输的文件。 |