HTML <form> 标签的 enctype 属性

来源:互联网 发布:正大数据恢复中心骗局 编辑:程序博客网 时间:2024/05/21 17:42

在下面的例子中,表单数据会在未编码的情况下进行发送:

<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.1Host: 127.0.0.1Cache-Control: no-cacheContent-Type: application/x-www-form-urlencodedusername=tom&password=123456


当enctype的值为multipart/form-data,这个值一般用于表单中包含文件上传的情况,它会将表单中的数据使用一个boundary作为分隔上传。例如:
POST /1.1/auth/access_token HTTP/1.1Host: 127.0.0.1Cache-Control: no-cache----WebKitFormBoundaryE19zNvXGzXaLvS5CContent-Disposition: form-data; name="username"18682750891----WebKitFormBoundaryE19zNvXGzXaLvS5CContent-Disposition: form-data; name="password"123456----WebKitFormBoundaryE19zNvXGzXaLvS5CContent-Disposition: form-data; name="format"json----WebKitFormBoundaryE19zNvXGzXaLvS5CContent-Disposition: form-data; name="client_id"android----WebKitFormBoundaryE19zNvXGzXaLvS5C

这个时候Content-Type也相应的变为multipart/form-data,同时后面还加上了分隔符boundary的描述。
所以,其实form的enctype属性某种程度上决定了Content-Type值和请求body里头的数据格式。




0 0
原创粉丝点击