首先我們先認識下今天的application/x-www-form-urlencode/multipart/form-data屬性所在的位置
1、form所屬
在Form元素的語法中,EncType表明提交數據的格式 用 Enctype 屬性指定將數據回發到服務器時瀏覽器使用的編碼類型。 例如: application/x-www-form-urlencoded: 窗體數據被編碼為名稱/值對。這是標准的編碼格式。 multipart/form-data: 窗體數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分,這個一般文件上傳時用。 text/plain: 窗體數據以純文本形式進行編碼,其中不含任何控件或格式字符。
2、不同的編碼方式
form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded。
當數據傳遞的方式是get的時候,瀏覽器使用application/x-www-form-urlencode的編碼方式,把form數據轉換為一個字符串,如(name=zhangsan&age=128),然后把這個字符添加到url后面,用?連接 組成新的url並加載
當數據傳遞的方式是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)。(ps:第二種方式的解釋本人還有些模糊,有更為精確答案的猿,希望分享下)