form 标签的 enctype 属性指定将数据回发到服务器时浏览器如果对表单数据进行编码,其有三种编码形式:

  1. 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 是默认属性。
  2. multipart/form-data
    它不对字符进行编码,在使用包含文件(如图片、mp4等文件)上传控件的表单时必须使用该值
  3. text/plain
    数据以纯文本格式进行编码,空格转换为 "+" 加号,但不对特殊字符编码

enctype属性规定在将表单数据发送到服务器之前如何对其进行编码

注意:只有method = "post"时才使用enctype属性。

语法

<form enctype="value"></form>

属性值
|值 |描述|
|--|--|
application/x-www-form-urlencoded| 默认。在发送前对所有字符进行编码(将空格转换为 "+" 符号,特殊字符转换为 ASCII HEX 值)。
multipart/form-data |不对字符编码。当使用有文件上传控件的表单时,该值是必需的。
text/plain |将空格转换为 "+" 符号,但不编码特殊字符。
上面的话太笼统?那看下面的解释吧:

  1. 当你指定了method = "post"时,就会用到enctype属性,这个属性可以设置三 种类型的值。如果你没有设置enctyp的值,那么它将会使用默认值application/x-www-form-urlencoded

  2. 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 后面。

  1. multipart/form-data:它不对字符进行编码,在使用包含文件(如图片、mp4等文件)上传控件的表单时必须使用该值

  2. 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>

这段代码有以下几点需要注意:

  1. form的提交行为需要通过type=submit实现
  2. form中的method属性不指定时,默认的提交方式为get请求,那么也就是说如果不指定method为post,那么是不会使用enctype属性的。
  3. form表单的enctype属性是application/x-www-form-urlencoded

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

弱小和无知不是生存的障碍,傲慢才是。