關於Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的區別及用法

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 partsmultipart/mixed
Messages with multiple, alternative partsmultipart/alternative
Message with multiple, related partsmultipart/related
Multiple parts are digestsmultipart/digest
For reporting of email status (admin.)multipart/report
Order of parts does not mattermultipart/parallel
Macintosh file datamultipart/appledouble
Aggregate messages; descriptor as headermultipart/header-set
Container for voice-mailmultipart/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 傳遞時的數據構造,見圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章