form 标签的 enctype 属性指定将数据回发到服务器时浏览器如果对表单数据进行编码,其有三种编码形式:
- application/x-www-form-urlencoded(也是默认格式)
application/x-www-form-urlencoded编码类型会将表单中发送到服务器之前都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值),数据编码成键值对的形式,当表单的action为post时,它会把form数据封装到 http body 中,然后发送到服务器;当表单的action位get时,它会把表单中发送的数据转换成一个字符串(如:a=1&b=2&c=3)并使用?连接到 url 后面。在不指定 enctype 属性时 application/x-www-form-urlencoded 是默认属性。 - multipart/form-data
它不对字符进行编码,在使用包含文件(如图片、mp4等文件)上传控件的表单时必须使用该值 - text/plain
数据以纯文本格式进行编码,空格转换为 "+" 加号,但不对特殊字符编码
enctype属性规定在将表单数据发送到服务器之前如何对其进行编码
注意:只有method = "post"时才使用enctype属性。
语法
<form enctype="value"></form>
属性值
|值 |描述|
|--|--|
application/x-www-form-urlencoded| 默认。在发送前对所有字符进行编码(将空格转换为 "+" 符号,特殊字符转换为 ASCII HEX 值)。
multipart/form-data |不对字符编码。当使用有文件上传控件的表单时,该值是必需的。
text/plain |将空格转换为 "+" 符号,但不编码特殊字符。
上面的话太笼统?那看下面的解释吧:
-
当你指定了method = "post"时,就会用到enctype属性,这个属性可以设置三 种类型的值。如果你没有设置enctyp的值,那么它将会使用默认值application/x-www-form-urlencoded
-
application/x-www-form-urlencoded编码类型:
-
在不指定 enctype 属性时 application/x-www-form-urlencoded 是默认属性。
-
会将表单中发送到服务器之前都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值),数据编码成键值对的形式
-
当表单的action为post时,它会把form数据封装到 http body 中,然后发送到服务器;
-
当表单的action为get时,它会把表单中发送的数据转换成一个字符串(如:a=1&b=2&c=3)并使用?连接到 url 后面。
-
multipart/form-data:它不对字符进行编码,在使用包含文件(如图片、mp4等文件)上传控件的表单时必须使用该值
-
text/plain:数据以纯文本格式进行编码,空格转换为'+'号,但不对特殊字符编码
示例
HTML代码如下:
<body>
<form action="" enctype="application/x-www-form-urlencoded">
First name: <input type="text" name="fname">
Last name: <input type="text" name="lname">
<input type="submit" value="提交">
</form>
</body>
这段代码有以下几点需要注意:
- form的提交行为需要通过type=submit实现
- form中的method属性不指定时,默认的提交方式为get请求,那么也就是说如果不指定method为post,那么是不会使用enctype属性的。
- form表单的enctype属性是application/x-www-form-urlencoded