標籤:sof ipa bsp urlencode content ble 資料封裝 Enctype 啟動
在學習<form>元素時,enctype屬性有三個值
enctype屬性工作表格:
值 |
描述 |
application/x-www-form-urlencoded |
在發送前編碼所有字元(預設) |
multipart/form-data |
不對字元編碼。 在使用包含檔案上傳控制項的表單時,必須使用該值。 |
text/plain |
空格轉換為 "+" 加號,但不對特殊字元編碼。 |
其中,當值為multipart/form-data時,<input>元素的type屬性必須為file。
type屬性工作表格:
值 |
描述 |
button |
定義可點擊按鈕(多數情況下,用於通過 JavaScript 啟動指令碼)。 |
checkbox |
定義複選框。 |
file |
定義輸入欄位和 "瀏覽"按鈕,供檔案上傳。 |
hidden |
定義隱藏的輸入欄位。 |
image |
定義映像形式的提交按鈕。 |
password |
定義密碼欄位。該欄位中的字元被掩碼。 |
radio |
定義選項按鈕。 |
reset |
定義重設按鈕。重設按鈕會清除表單中的所有資料。 |
submit |
定義提交按鈕。提交按鈕會把表單資料發送到伺服器。 |
text |
定義單行的輸入欄位,使用者可在其中輸入文本。預設寬度為 20 個字元。 |
後來我在學習requests模組時,再次接觸到了application/x-www-form-urlencoded和multipart/form-data,下面說說深入的理解:
enctype表示MIME編碼。
application/x-www-form-urlencoded : 表單資料被編碼為成對的名稱和數值。這是標準的編碼格式。
multipart/form-data : 表單資料被編碼為一條訊息,頁上的每個控制項對應訊息中的一個部分。
text/plain : 表單資料以純文字形式進行編碼,其中不含任何控制項或格式字元。
補充
form的enctype屬性為編碼方式,常用有兩種: application/x-www-form-urlencoded 和 multipart/form-data , 預設為application/x-www-form-urlencoded 。
當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form資料轉換成一個字串(name1=value1&name2=value2...),然後把這個字串append到url後面,用?分割,載入這個新的url。
當action為post時候,瀏覽器把form資料封裝到http body中,然後發送到server。
如果沒有 type=file 的控制項,用預設的 application/x-www-form-urlencoded 就可以了。
但是如果有 type=file 的話,就要用到 multipart/form-data 了。瀏覽器會把整個表單以控制項為單位分割,並為每個部分加上Content-Disposition(form-data或者file)、Content-Type(預設為text/plain)、name(控制項name)等資訊,並加上分割符(boundary)。
總結
報文主體會打上標籤,這個標籤就是MIME類型。通過這個標籤,瀏覽器和伺服器就能夠知道資料的類型,進而採用合適的方式來處理該資料。
MIME類型結構
application/x-www-form-urlencoded和multipart/form-data的區別