天天看點

HTTP multipart/form-data 請求協定分析

協定頭和協定體以"\r\n\r\n"分隔

協定體的内容通過content-length的長度擷取

附件上傳時如下

  POST/logsys/home/uploadIspeedLog!doDefault.html HTTP/1.1 

  Accept: text/plain, */* 

  Accept-Language: zh-cn 

  Host: 192.168.24.56

  Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2

  User-Agent: WinHttpClient 

  Content-Length: 3693

  Connection: Keep-Alive

  -------------------------------7db372eb000e2

  Content-Disposition: form-data; name="file"; filename="kn.jpg"

  Content-Type: image/jpeg

  (此處省略jpeg檔案二進制資料...)

  -------------------------------7db372eb000e2--

紅色字型部分就是協定的頭,其中,content-type是必須的,它包括一個類似标志性質的名為boundary的标志,它可以是随便輸入的字元串。

Content-Length: 3693 ,這裡的3693是要上傳檔案的總長度。如果設定Transfer-Encoding: chunked可以不用設定Content-Length

綠色字型部分就是需要上傳的資料,可以是文本,也可以是圖檔等。資料内容前面需要有Content-Disposition, Content-Type以及Content-Transfer-Encoding等說明字段。

最後的紫色部分就是協定的結尾了。

繼續閱讀