HTTP发送多种数据的多部份对象集合

688 阅读2分钟

微信公众号:  [大前端驿站]
关注大前端驿站。问题或建议,欢迎公众号留言。 这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战

我们在发送邮件时,可以在邮件里面写入文字,也可以添加多种类型的附件,比如文本、图片、视频等等。那大家有没有想过,HTTP怎么来处理这种多种数据类型的文件传输呢?

这里我们就要来聊聊MIME机制,MIME机制全称是Multipurpose Internet Mail Extensions,翻译过来就是多用途因特网邮件扩展,采用MIME机制,它允许邮件处理文本、图片、视频等多个不同类型的数据。例如,图片等二进制数据以 ASCII 码字符串编码的方式指明, 就是利用 MIME 来描述标记数据类型。而在 MIME 扩展中会使用一 种称为多部分对象集合(Multipart)的方法,来容纳多份不同类型的 数据。

相应地,HTTP 协议中也采纳了多部分对象集合,发送的一份报文主 体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

多部分对象集合包含的对象如下:

  • multipart/form-data:在 Web 表单文件上传时使用。
  • multipart/byteranges:状态码 206(Partial Content,部分内容)响应报文包含了多个范 围的内容时使用。
  • multipart/form-data
Content-Type: multipart/form-data; boundary=AaB03x 
--AaB03x 
Content-Disposition: form-data; name="field1"

Joe Blow 
--AaB03x 
Content-Disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain 

...(file1.txt的数据)... --AaB03x--
  • multipart/byteranges
HTTP/1.1 206 Partial Content
Date: Fri, 13 Jul 2012 02:45:26 GMT 
Last-Modified: Fri, 31 Aug 2007 02:02:20 GMT 
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES 

--THIS_STRING_SEPARATES 
Content-Type: application/pdf 
Content-Range: bytes 500-999/8000

...(范围指定的数据)... 
--THIS_STRING_SEPARATES 
Content-Type: application/pdf 
Content-Range: bytes 7000-7999/8000 

...(范围指定的数据)... 
--THIS_STRING_SEPARATES--

在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上 Content-type。

使用 boundary 字符串来划分多部分对象集合指明的各类实体。在 boundary 字符串指定的各个实体的起始行之前插入“--”标记(例如:- -AaB03x、--THIS_STRING_SEPARATES),而在多部分对象集合对 应的字符串的最后插入“--”标记(例如:--AaB03x--、-- THIS_STRING_SEPARATES--)作为结束。

多部分对象集合的每个部分类型中,都可以含有首部字段。另外,可 以在某个部分中嵌套使用多部分对象集合。


~~ 感谢观看

关注下方【大前端驿站】
让我们一起学,一起进步

【分享、点赞、在看】三连吧,让更多的人加入我们