http协议之文件上传 boundary

RFC1867协议
在原有的基础上添加了对file域的支持,同时限定了form的method必须为POST,enctype必须为multipart/form-data.
实际上enctype最后会转换成Content-Type。

为了方便查看我们写一个页面,然后使用firefox的firebug插件查看network信息和google chrome的debug功能。





啊啊啊


ads高
name="body" value="123" /> type="submit" />




提交后首先查看头信息(Request headers)
firefox将headers和content分隔开了,卡起来不清晰,我就看google了。
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:140952
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryuwYcfA2AIgxqIxA0
Host:127.0.0.1:8081
Origin:null
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16
首先是Content-Type
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryuwYcfA2AIgxqIxA0
首先指定了表单类型为multipart/form-data;。
boundary是分隔符
因为上传文件不在使用原有的http协议了。请求内容不再可能以
x = y方式发送了。而使用了
分隔符
字段内容
分隔符号
字段内容2
而boundary就是指定分隔符号的标志。
请求的内容就应该是这样的了。

------WebKitFormBoundaryuwYcfA2AIgxqIxA0
Content-Disposition: form-data; name="body"

123
------WebKitFormBoundaryuwYcfA2AIgxqIxA0
Content-Disposition: form-data; name="name"; filename="QQ.exe"
Content-Type: application/x-msdownload
文件本身的字节

你可能感兴趣的:(http协议)