關於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=good@qq.com
......

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 傳遞時的數據構造,見圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM