FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型
我们知道在通过POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。知道通过表单上传文件时必须指定编码类型为"multipart/form-data"。而text/plain是我们在做纯文本传输时防止接收数据时出现编码混乱而设置的。为什么要这么设置?以下三者的区别。
application/x-www-form-urlencoded
这是通过表单发送数据时默认的编码类型。我们没有在from标签中设置enctype属性时默认就是application/x-www-form-urlencoded类型的。application/x-www-form-urlencoded编码类型会把表单中发送的数据编码为“名称/值”对。这是标准的编码格式。当表单的ACTION为POST的时候,浏览器把form数据封装到http body中,然后发送到服务器。当表单的ACTION为GET的时候,application/x-www-form-urlencoded编码类型会把表单中发送的数据转换成一个字符串(name=coderbolg&key=php),然后把这个字符串附加到URL后面,并用?分割,接着就请求这个新的URL。当我们通过POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。方法是在xmlobject.open()方法之后添加xmlobject.setRequestHeader("Content-Type","application/x-www-form-urlencoded") 不然服务器会接收不到POST过来的数据。
multipart/form-data
然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时“application/x-www-form-urlencoded”这种编码方式效率很低。在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。(表单里有图片上传用ENCTYPE="multipart/form-data")。
<form name="userInfo" method="post" action="first_submit.jsp" ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。如下:
<tr>
<td height="30" align="right">上传企业营业执照图片:</td>
<td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34" onChange="checkimage()"></td>
</tr>
当表单中有file类型控件并希望它正常工作的话,就必须设置成multipart/form-data类型,浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件 name)等信息,并加上分割符(boundary)。
注:enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值
text/plain
数据以纯文本形式进行编码,其中不含任何控件或格式字符
分享到:
相关推荐
本文将深入探讨两种常见的表单数据编码格式:`application/x-www-form-urlencoded` 和 `multipart/form-data`。 首先,`application/x-www-form-urlencoded` 是标准的编码格式,适用于大部分情况。当表单数据被提交...
通常前端通过POST请求向服务器端提交数据格式有4中,分别是”application/x-www-form-urlencoded”格式、” multipart/form-data”格式、”application/json”格式和”text/xml”格式。通常最常见的是”application/...
本篇文章主要讨论的是HTTP POST请求体中的数据格式,特别是`multipart/form-data`和`application/x-www-form-urlencoded`两种常见类型。 1. `multipart/form-data` `multipart/form-data`是HTTP协议中用于上传包含...
C# RestClient组件下载,实现请求接口地址。...application/x-www-form-urlencoded Form表单 text/plain 纯文本 text/xml XML文本 text/html HTML文本 multipart/form-data 用于上传文件 application/xhtml+xml XHTML
application/x-www-form-urlencoded application/json , text/plain 从模型构建HTTP请求/响应原始消息: 方法,协议,协议版本/状态码,原因 查询参数 标头 饼干 正文,支持以下contentTypes: multipart/...
5. `application/*`开头的类型,例如`application/xhtml+xml`(XHTML格式)、`application/xml`(XML数据格式)、`application/atom+xml`(Atom XML聚合格式)...-stream`(二进制流数据)以及`application/x...
同时,我们也可以使用其他格式,如 application/x-www-form-urlencoded,来上传文件和表单数据。 HTTP POST 方式上传文件是一种常用的技术,它允许客户端将文件发送到服务器端,以便在服务器端进行处理和存储。在...
<form action="OutDataServlet" method="post" enctype="application/x-www-form-urlencoded"> <table style="text-align:right;"> 上传文件:</td> <td><input type="file" name="file" /></td> </tr> ...
当请求包含自定义头部、非GET/HEAD/POST方法或者请求方法为POST但Content-Type不为application/x-www-form-urlencoded、multipart/form-data、text/plain时,浏览器会发送一个OPTIONS预检请求,询问服务器是否接受...
- `application/x-www-form-urlencoded`:表单数据的默认编码类型 - `multipart/form-data`:用于上传文件的表单数据编码类型 - `text/xml` 或 `application/xml`:XML文档 - `application/xhtml+xml`:XHTML文档 ...
查尼菲 Chanify是一种安全而简单的通知工具。对于开发人员,系统管理员和所有人而言,都可以使用API推送通知。...application/x-www-form-urlencoded : text= 命令行 # Send message $ curl --form-string " te
例如,`application/json`表示JSON格式的数据,`text/plain`表示纯文本,`multipart/form-data`则用于表单数据等。在Go的`net/http`包中,服务器端可以使用`Request.Header.Get("Content-Type")`来获取这个头的值。 ...
2. `application/x-www-form-urlencoded`: 表单数据默认的编码方式,常用于POST请求。 3. `multipart/form-data`: 用于上传文件或包含多个部分的数据,比如HTML表单中的文件输入字段。 4. `image/jpeg`, `image/png`...
前言 CORS 即 Cross Origin Resource Sharing 跨域资源共享. 跨域请求分两种:简单请求、复杂请求. ... application/x-www-from-urlencoded multipart/form-data text/plain. ==任何不满足上述要求的
当浏览器发现请求方法不是GET、HEAD或POST,或者Content-Type不为application/x-www-form-urlencoded、multipart/form-data或text/plain时,会先发送一个OPTIONS请求到目标服务器,询问服务器是否允许此次跨域请求...
application/x-www-form-urlencoded: 在发送前编码所有字符(默认)。这是标准的编码格式。 multipart/form-data: 不对字符编码,在使用包含文件上传控件的表单时,必须使用该值。 text/plain: 窗体数据以纯文本...
为了解决这个问题,我们需要将数据转换为"Content-Type": "application/x-www-form-urlencoded"或"multipart/form-data"这两种更符合传统表单提交的数据格式。 1. **将数据转换为Form Data格式:** 要将axios发送...
这是因为在默认的`application/x-www-form-urlencoded`编码方式下,表单数据会被编码为URL字符串,而`multipart/form-data`则允许表单以二进制数据流的方式传输,包括文件内容。另外,`text/plain`通常用于发送纯...
这是因为在POST请求中,文件数据是以multipart/form-data格式发送的,而不是普通的application/x-www-form-urlencoded或text/plain格式。 4. **添加文件参数**:在HTTP请求Sampler的“Parameters”区域,添加文件...