HTTP multipart/form-data 请求类型简介

2016-11-22 18:24:29   最后更新: 2016-11-30 18:39:44   访问数量:446




上一篇日志中,我们介绍了 http 协议的基本内容

HTTP 协议简介

事实上,HTTP 协议并不仅仅包含这些内容,例如我们本文中将会介绍的 multipart/form-data 就是常见的一种 http 请求

 

在 1995 年出台的 rfc1867 协议中,HTTP 协议的 Content-Type 扩充了 multipart/form-data 类型用以支持向服务器发送二进制数据,以便可以在 POST 请求中实现文件上传等功能

在 html 中,如果 <form> 表单标签中增加 enctryp="multipart/form-data" 属性,那么这个表单就会将提交请求中的 Content-Type 设置为 multipart/form-data

<form method="post" action="http://test.techlog.cn/upload.do" enctype="multipart/form-data"> <inputtype="text" name="desc"> <inputtype="file" name="pic"> </form>

 

 

这个表单提交时,header 如下:

POST /t2/upload.do HTTP/1.1 User-Agent: TechlogWapRebot Accept-Language: zh-cn,zh;q=0.5 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Content-Length: 60408 Content-Type:multipart/form-data; boundary=ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC Host: test.techlog.cn

 

 

boundary 指定的是分割符,用户可以自由指定,但建议尽量复杂一些,以免与请求正文中文本发生冲突,上面的 ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC 就是浏览器所指定的分割符

 

请求体会被认为是二进制字符串,并使用 --ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC 来进行分割:

--ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC Content-Disposition: form-data;name="desc" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC Content-Disposition: form-data;name="pic"; filename="photo.jpg" Content-Type: application/octet-stream Content-Transfer-Encoding: binary [图片二进制数据] --ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC--

 

 

Multipart/form-data POST文件上传详解 -- http://blog.csdn.net/xiaojianpitt/article/details/6856536

 






技术帖      file      技术分享      上传      upload      http      post      http1.1      multipart     


京ICP备15018585号