http协议之文件上传 boundary
程序员文章站
2024-01-31 20:22:52
...
RFC1867协议
在原有的基础上添加了对file域的支持,同时限定了form的method必须为POST,enctype必须为multipart/form-data.
实际上enctype最后会转换成Content-Type。
为了方便查看我们写一个页面,然后使用firefox的firebug插件查看network信息和google chrome的debug功能。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>啊啊啊</title>
</head>
<body>
ads高
<form action="http://127.0.0.1:8080/daowole/rb1" method="post" enctype="multipart/form-data"><input
name="body" value="123" /> <input name="name" type="file" /><input
type="submit" /></form>
</body>
</html>
提交后首先查看头信息(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
文件本身的字节
在原有的基础上添加了对file域的支持,同时限定了form的method必须为POST,enctype必须为multipart/form-data.
实际上enctype最后会转换成Content-Type。
为了方便查看我们写一个页面,然后使用firefox的firebug插件查看network信息和google chrome的debug功能。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>啊啊啊</title>
</head>
<body>
ads高
<form action="http://127.0.0.1:8080/daowole/rb1" method="post" enctype="multipart/form-data"><input
name="body" value="123" /> <input name="name" type="file" /><input
type="submit" /></form>
</body>
</html>
提交后首先查看头信息(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
文件本身的字节
上一篇: 急Tp的create方法有关问题
下一篇: 从FusionIO的NVM压缩接口谈起