`

application/x-www-form-urlencoded & multipart/form-data & text/plain

    博客分类:
  • Html
阅读更多

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的区别

    multipart/form-data : 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 text/plain : 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。 补充 form的enctype属性为编码方式,常用有...

    使用axios发送post请求,将JSON数据改为form类型的示例

    通常前端通过POST请求向服务器端提交数据格式有4中,分别是”application/x-www-form-urlencoded”格式、” multipart/form-data”格式、”application/json”格式和”text/xml”格式。通常最常见的是”application/...

    为Retrofit统一添加post请求的默认参数的方法

    APP_FORM_URLENCODED(application/x-www-form-urlencoded), APP_JSON(application/json), APP_OCTET_STREAM(application/octet-stream), MULTIPART_FORM_DATA(multipart/form-data), TEXT_HTML(text/html), ...

    C# RestClient组件下载,实现请求接口地址

    C# RestClient组件下载,实现请求接口地址。...application/x-www-form-urlencoded Form表单 text/plain 纯文本 text/xml XML文本 text/html HTML文本 multipart/form-data 用于上传文件 application/xhtml+xml XHTML

    http-z:从模型解析到HTTP消息

    application/x-www-form-urlencoded application/json , text/plain 从模型构建HTTP请求/响应原始消息: 方法,协议,协议版本/状态码,原因 查询参数 标头 饼干 正文,支持以下contentTypes: multipart/...

    Struts2文件的上传和下载

    1) application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式。 2) multipart/form-data:这种编码方式的表单会以二进制流...

    chanify-ios:Chanify是一种安全而简单的通知工具。该存储库是Chanify的iOS clinet

    查尼菲 Chanify是一种安全而简单的通知工具。对于开发人员,系统管理员和所有人而言,都可以使用API​​推送通知。...application/x-www-form-urlencoded : text= 命令行 # Send message $ curl --form-string " te

    Python-Web自测试卷1.docx

    A.application/x-www-form-urlencoded B.multipart/form-data C.text/plain D.None 3. HTTP 返回码是4**,表示()? A. 返回成功 B. 重定向 C.客户端错误 D.服务器错误 4.下面哪一个不是HTTP方法()? A.post B....

    Django 解决上传文件时,request.FILES为空的问题

    用html的form上传文件时,...application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。 text/plain 空格转换为

    Django实现跨域请求过程详解

    前言 CORS 即 Cross Origin Resource Sharing 跨域资源共享. 跨域请求分两种:简单请求、复杂请求. ... application/x-www-from-urlencoded multipart/form-data text/plain. ==任何不满足上述要求的

    Form表单标签的Enctype属性的作用及应用示例介绍

    application/x-www-form-urlencoded: 在发送前编码所有字符(默认)。这是标准的编码格式。 multipart/form-data: 不对字符编码,在使用包含文件上传控件的表单时,必须使用该值。 text/plain: 窗体数据以纯文本...

    bodyreceiver:用于Koa @ 2 +的请求正文接收器和解析器中间件

    application/x-www-form-urlencoded text/plain multipart/form-data 安装 // npm npm install bodyreceiver // yarn yarn add bodyreceiver 用法 var Koa = require ( 'koa' ) ; var BodyReceiver = require ( '...

    html入门到放弃笔记

    Hyper Text Markup Language 超级 文本 标记 语言 超文本 :也是文本,但会具备特殊功能 普通文本 a : 普通字符 a 超文本 a : 表示超链接 普通文本 b : 普通字符 b 超文本 b : 加粗显示文本 标记 :超文本...

    spring-framework-reference-4.1.2

    What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................

    spring-framework-reference4.1.4

    What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................

Global site tag (gtag.js) - Google Analytics