如何正確選擇 Form
的 Content-type
型別?
x-www-form-urlencoded
,表單預設的Content-type
型別,支援ASCII-text
文字內容multipart/form-data
,允許提交表單包含:files
,non-ASCII-text
,Binary
型別資料
application/x-www-form-urlencoded
當表單使用 application/x-www-form-urlencoded
時,需要對引數進行urlencode 編碼
和序列化
如,表單提交引數(key-value)為:
param1:website
param2:https://www.google.com
經過 urlencode
編碼後:
param1:website
param2:https%3A%2F%2Fwww.google.com
再經過序列化,得到結果
param1=website¶m2=https%3A%2F%2Fwww.google.com
multipart/form-data
一個 multipart/form-data
訊息體,包含多個塊組成,每個塊代表一個有效的表單控制元件,並使用 boundary
的字串分割:
- 第一部分,
Content-Disposition: form-data
引數名稱,如,name="my_control
- 第二部分,
Content-Type: text/plain
,Content-Type: image/png
- 第三部分,訊息內容
例如表單:
<FORM action="http://server.com/cgi/handle"
enctype="multipart/form-data"
method="post">
<P>
What is your name? <INPUT type="text" name="submit-name"><BR>
What files are you sending? <INPUT type="file" name="files"><BR>
<INPUT type="submit" value="Send">
<INPUT type="reset">
</FORM>
假設,submit-name
輸入 Larry
文字,files
選擇檔案 file1.txt
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--