第23天 关于<form>标签的enctype属性你有哪些了解?
form 标签的 enctype 属性指定将数据回发到服务器时浏览器如果对表单数据进行编码,其有三种编码形式:
https://blog.csdn.net/bigtree_3721/article/details/82809459
这个比较全面。
少了 json
<form> 标签的 enctype 属性,用来控制表单上传的数据的编码格式。其值和 HTTP 请求的 Content-type 值一样。在数据提交到服务器之前,会以 enctype 的值进行编码。
enctype 对应的值如下
| 值 | 用法 |
| --------------------------------- | ------------------------------------------------------------------------------------- |
| application/x-www-form-urlencoded | 默认值,会对所有字符转进行编码 (将空格转换为 "+" 符号,特殊字符转换为 ASCII HEX 值) |
| multipart/form-data | 不会对字符进行编码,当表单中有文件时必须要此编码 |
| text/plain | 将空格转换为 "+" 符号,但不编码特殊字符 |
参考文章:
HTML <form> enctype 属性
代表了form表单提交的数据发送到服务器如何进行编码,
默认是会对所有字符进行编码,空格转换+,特殊字符转换ASCLL
muitipart/form-data 不对字符进行编码,传递文件时该值是必需的
text/plain 对空格进行编码,剩余不编码
规定了form表单提交时发送到服务器的数据如何变编码
借助前辈们的力量,再整理一下:
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网页页面如下:

例如:在上图中的表单填写相应的信息后,进行提交。可以注意到:
+号action为ge时,表单中发送的数据被通过?连接,连接到原url后面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
数据以纯文本格式进行编码,空格转换为 "+" 加号,但不对特殊字符编码
Most helpful comment
form 标签的 enctype 属性指定将数据回发到服务器时浏览器如果对表单数据进行编码,其有三种编码形式:
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 是默认属性。
它不对字符进行编码,在使用包含文件(如图片、mp4等文件)上传控件的表单时必须使用该值
数据以纯文本格式进行编码,空格转换为 "+" 加号,但不对特殊字符编码