Form的enctype屬性表示頁面表單數據向服務端傳輸時的編碼方式,常用有兩種:application/x-www-form-urlencoded 和 multipart/form-data,默認爲application/x-www-form-urlencoded。
1、application/x-www-form-urlencoded:
窗體數據被編碼爲名稱/值對,這是標準且默認的編碼格式。當action爲get時候,客戶端把form數據轉換成一個字串append到url後面,用?分割。當action爲post時候,瀏覽器把form數據封裝到http body中,然後發送到server。
application/x-www-form-urlencoded 傳遞時的數據構造:
......
username=twm&[email protected]
......
2、multipart/form-data:
multipart表示的意思是單個消息頭包含多個消息體的解決方案。multipart媒體類型對發送非文本的各媒體類型是有用的。一般多用於文件上傳。
multipart/form-data只是multipart的一種。目前常用的有以下這些類型(注:任何一種執行時無法識別的multipart子類型都被視爲子類型"mixed")
HTML FORM data (see Ch. 9 and App. B) | multipart/form-data |
Messages with multiple parts | multipart/mixed |
Messages with multiple, alternative parts | multipart/alternative |
Message with multiple, related parts | multipart/related |
Multiple parts are digests | multipart/digest |
For reporting of email status (admin.) | multipart/report |
Order of parts does not matter | multipart/parallel |
Macintosh file data | multipart/appledouble |
Aggregate messages; descriptor as header | multipart/header-set |
Container for voice-mail | multipart/voice-message |
Infinite multiparts - See Chapter 9 (Netscape) | multipart/x-mixed-replace |
當客戶端發起起求時:
請求頭包含Content-Type:"multipart/form-data; boundary=---------------------------30613490016641",表明form的enctype爲multipart/form-data,同時分隔每個控件field的分割符(boundary)是'---------------------------30613490016641'。
請求內容的每個field被分成小部分,而且包含一個value是"form-data"的"Content-Disposition"的頭部;一個"name"屬性對應field的ID。
multipart/form-data 傳遞時的數據構造,見圖: