文件上传的基本原理(一) 您所在的位置:网站首页 文档数据库的基本原理有哪些内容 文件上传的基本原理(一)

文件上传的基本原理(一)

2024-06-02 20:22| 来源: 网络整理| 查看: 265

一.概述  Struts/Spring MVC 文件上传实现都是基于Commons-fileupload,但背后的原理,大多数估计没有关注,最近阅读Commons-fileupload源码也发现,只有基础才是最重要的,万变不离其宗,在it领域不然会被漫天的新技术,冲昏了头,不知所措,下面开始。 二.HTTP报文 1.要想理解文件上传,先要对HTTP报文有一个基本的了解 2.HTTP报文是简单的格式化数据块,每条报文都包含来自客户端(如浏览器)的请求,或者来自服务器的响应 3.HTTP报文由3部分组成 起始行                  - 对报文的描述,所有的HTTP报文都以一个起始行作为开始,即报文的第一行就是起始行首部                     - 可以有0或多个首部字段,每个首部 字段都包含一个名字和一个值,首部字段后是\r\n,首部以一个空行\r\n结束实体的主体部分   - 首部恐婚之后就是可选的报文实体,实体的主体是HTTP报文的负荷,传输的内容就在实体的主体中 2.1. 通用首部  提供一些有用的通用功能,有0个或多个首部字段,每个首部字段以\r\n结束,首部以一个空行\r\n与实体分隔开 2.2 实体首部 1.实体首部指的是用于应对实体主体部分的首部,如实体首部可以说明实体主体部分的数据类型 2.每个实体首部以CRLF结束,紧随就是实体主体的原始数据,不管是文本还是二进制 2.3 实体主体 1.实体的主体就是HTTP报文的负荷,就是HTTP要传输的内容 2.HTTP可以承载很多类型的数据类型:图片、视频、文档等,可以是二进制,也可以是文本 2.4 TCP

1.TCP为HTTP提供了一条可靠的比特传输管道。从TCP一端填入的字节会从另一端以原有的顺序、正确的传送出来,TCP提供了:

无差错的数据传输按序传输 - 数据总是按照发送的顺序到达未分段的数据流 - 可以在任何时刻以任意尺寸将数据发送出去

2.HTTP要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输,TCP收到数据流后,会将数据流砍成被称作段的小数据块,并将段封装在IP分组中,通过因特网传输。所有这些工作都是由TCP/IP软件完成的,HTTP程序员什么也看不见

3.只要建立了TCP连接,客户端与服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序了。

三.Form表单 method必须为post,值不是放在URL后面传到服务器中的 对于“multipart/form-data”类型的form表单,浏览器上传的实体内 容中的每个表单字段元素的数据之间用字段分隔界线进行分割,两个分隔界线间的内容称为一个分区,每个分区中的内容可以被看作两部分,一部分是对表单字段元 素进行描述的描述头,另外一部是表单字段元素的主体内容accept=".xls, .xlsx"限制了上传文件为Excelmultiple="multiple"说明可以同时上传多个文件 四.请求报文 4.1 如果选择2个Excel文件:测试.xlsx和测试1.xlsx 4.2 请求报文 4.3 实体 为了显示观看,故意换行显示,其实是没有的 首部中Content-Type定义了分隔符boundary,以4个破折号开头实体中分隔符 = "\r\n--" + 首部中分隔符boundary实体首部Content_Disposition中定义了filename表示上传文件名(name=“fileName”表示input域属性),由于这里是一个input框中上传两个Excel文件,所以这里的2个实体首部中的Content_Disposition的name属性都为fileName实体首部Content-Type描述了上传文件的类型,这里表示Sheet工作表,即Excel实体首部中多行是以CRLF分隔的,即\r\n实体中可能存在多部分,每一部分之间以分隔符boundary分隔,每个部分的实体首部与主体之间以CRLFCRLF分隔,即\r\n\r\n符号 - 标志 - 十六进制 - 字节码 , 回车: \r - CR - 0d - 13, 换行:\n - LF - oa - 10


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有