form表單的enctype類型html
HTML forms provide three methods of encoding. app
application/x-www-form-urlencoded (the default)ide
multipart/form-data編碼
text/plainurl
上傳文件的表單中<form>要加屬性enctype="multipart/form-data" ,不少人只是死記硬背知道上傳表單要這麼 寫,知其然而不知其因此然。spa
那到底爲何要添加這個屬性呢?它是什麼意思呢?它又有什麼其餘可選值呢? 3d
其實form表單在你不寫enctype屬性時,也默認爲其添加了enctype屬性值,默認值是enctype="application/x-www-form-urlencoded"。這個屬性管理的是表單的MIME編碼,共有三個值可選: rest
application/x-www-form-urlencoded (默認值)code
multipart/form-dataorm
text/plain
其中
①application/x-www-form-urlencoded是默認值,你們可能在AJAX裏見過這 個:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");這兩個要作的是同一件事情,就是設置表單傳輸的編碼。在AJAX裏不寫有可能會報錯,可是在HTML的form表單裏是能夠不寫 enctype="application/x-www-form-urlencoded"的,由於默認HTML表單就是這種傳輸編碼類型。
②multipart-form-data是用來指定傳輸數據的特殊類型的,主要就是咱們上傳的非文本的內容,好比圖片或者mp3等等。
③text/plain是純文本傳輸的意思,在發送郵件時要設置這種編碼類型,不然會出現接收時編碼混亂的問題 ,網絡上常常拿text/plain和 text/html作比較,其實這兩個很好區分,前者用來傳輸純文本文件,後者則是傳遞html代碼的編碼類型,在發送頭文件時才用得上。①和③都不能用 於上傳文件,只有multipart/form-data才能完整的傳遞文件數據。
摘自:http://www.cnblogs.com/mumue/archive/2012/05/24/2515984.html
application/x-www-form-urlencoded報文示例
POST /thread_loan/rest/accounts/bankCard HTTP/1.1 Host: localhost:8080 Authorization: Basic YWRtaW46eW91eGluMTEyNg== Cache-Control: no-cache Postman-Token: f5ab84b2-f412-f03d-2b5b-c5327369835e Content-Type: application/x-www-form-urlencoded lendReqId=726241&accountNo=12143124352323&cityCode=800&accountBranchBank=hello+world
multipart-form-data報文示例
POST /thread_loan/rest/accounts/bankCard HTTP/1.1 Host: localhost:8080 Authorization: Basic YWRtaW46eW91eGluMTEyNg== Cache-Control: no-cache Postman-Token: b5989aca-f0c1-6383-d686-ecf4c3dc91b8 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="lendReqId" 726241 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="accountNo" 12143124352323 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="cityCode" 800 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="accountBranchBank" hello world ----WebKitFormBoundary7MA4YWxkTrZu0gW
==============END==============