http multipart格式理解

通常在浏览器中上传文件到服务器的时候,我们会用multipart/form-data这种方式将数据POST到服务器,这种格式下,我们可已同时上传多个文件。

对于multipart/form-data类型数据,上传的数据的真正地Content-Type实际是包含在body中的。

在linux下我们可以使用curl命令来模拟

curl -F flag=2 -F file=@/home/aidu35/workspace/test.json http://localhost:8080/import

tcpdump 抓到的请求报文格式如下

图片

可以看到在请求头中Content-Type 为 multipart/form-data, boundary参数说明了分割主体中不同部分所用的字符串

boundary分割开了multipart的每个部分,每个部分都是由这个boundary开头

Content-Disposition,此项的类型为form-data。name是-F参数等号前面的值,除了类型和name这两项还可能有其它的属性,如上图第二个部分的filename。根据传输的数据的类型的不同,Disposition下面的内容是不同的,详细见 RFC 2183

Content-Type 此项表示multipart/form-data中每一个部分的内容类型,默认为text/plain(此类型时可能不显示出来)

data 部分就表示multipart/form-data 真正上传的数据内容了


wechat
微信扫一扫,订阅我的博客动态^_^