需求
分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。
客户端给服务器发送数据也一样可以使用 Chunk 传输,比如,客户端要上传数据,但是数据没有完全生成,通过chunk分块传输,就可以一边生成数据一边上传,典型的比如:上传录音。
服务端接收数据
| 1 | 
 | 
postman一次发送body,如下图:

客户端分块发送
- chunk 需要加入头:Transfer-Encoding: chunked
- 每个 chunk 块的格式都是:[chunk size][CRLF][chunk data][CRLF]
- 结束 chunk 块是0,也就是:[0][CRLF][CRLF]
举例:
发送一个请求,body 内容为 12HELLO,其中 12 是一个 chunk 包,HELLO是一个 chunk 包。
分块请求体:
| 1 | POST /test/upload HTTP/1.1\r\n | 
原始数据:
| 1 | 504f5354202f746573742f75706c6f616420485454502f312e310d0a |