Http 上传压缩包需要加0\r\n\r\n
在HTTP上传中,特别是在使用Transfer-Encoding: chunked
(分块传输编码)时,0\r\n\r\n
具有特定的含义,它标志着数据流的结束。这与你上传的是“压缩包”还是其他类型的文件没有直接关系,而是由HTTP协议本身决定的。
一、0\r\n\r\n
的含义
在HTTP的分块传输编码(Chunked Transfer Encoding)中,消息体被分割成一系列的数据块(chunks)进行发送。每个块都有一个大小说明和实际数据。
- 数据块格式:
<十六进制数表示的块大小>\r\n<数据内容>\r\n
- 结束标志:当所有数据块发送完毕后,服务器需要发送一个特殊的块来表示传输结束,这个块就是:
0\r\n \r\n
0
表示接下来的块大小为0,即没有更多数据。\r\n
是CRLF(回车换行),用于分隔。- 最后的
\r\n
标志着整个chunked消息体的彻底结束。
二、需要注意的是,并非所有HTTP上传都必须包含0\r\n\r\n
。
- Content-Length 方式:如果使用
Content-Length
头指明了请求体的总字节数,那么就不需要分块传输,也就不需要0\r\n\r\n
。服务器会根据Content-Length
读取指定数量的字节后,就认为请求体结束。 - Transfer-Encoding: chunked 方式:只有在这种模式下,才需要用
0\r\n\r\n
来明确表示数据结束。