您的位置:首页 > Web前端 > HTML

HTML <form> 标签的 enctype 属性

2015-02-02 20:19 609 查看
在下面的例子中,表单数据会在未编码的情况下进行发送:

<form action="form_action.asp" enctype="text/plain">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>


定义和用法

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

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

描述
application/x-www-form-urlencoded在发送前编码所有字符(默认)
multipart/form-data不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。
text/plain空格转换为 "+" 加号,但不对特殊字符编码。
当enctype的默认值是application/x-www-form-urlencoded,这个值表示会将表单数据用&符号做一个简单的拼接。例如:
POST /1.1/auth/access_token HTTP/1.1
Host: 127.0.0.1
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

username=tom&password=123456


当enctype的值为multipart/form-data,这个值一般用于表单中包含文件上传的情况,它会将表单中的数据使用一个boundary作为分隔上传。例如:

POST /1.1/auth/access_token HTTP/1.1
Host: 127.0.0.1
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="username"

18682750891
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="password"

123456
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="format"

json
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="client_id"

android
----WebKitFormBoundaryE19zNvXGzXaLvS5C


这个时候Content-Type也相应的变为multipart/form-data,同时后面还加上了分隔符boundary的描述。

所以,其实form的enctype属性某种程度上决定了Content-Type值和请求body里头的数据格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: