先了解一下form表单提交的过程:
(1)先把form表单里的表单元素的name属性和value属性进行收集
(2)按照enctype属性的设置,选择合适的编码方式,对数据进行编码,放在请求头里
(3)浏览器进行发送
enctype有三种:
(1)application/x-www-form-urlencoded:在发送前编码所有字符,表单里的数据被编码成名称/值对
(2)multipart/form-data:不进行编码。指定传输数据的类型为二进制类型,比如图片、mp3等。一般用在文件上传。它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,type="file",浏览器会把整个表单以控件为单位分割。并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
(3)text/plain:纯文本的传输。空格转换为 "+" 加号,但不对特殊字符编码。