定义:enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 “application/x-www-form-urlencoded”。即在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。

属性值:

大家应该清楚在通过POST方式向服务器发送AJAX请求时,需要指定请求头Content-Type为application/x-www-form-urlencoded编码类型;表单上传文件时,需要指定请求头Content-Type为”multipart/form-data”;纯文本传输时,为防止接收数据时出现编码混乱,需要指定请求头Content-Type为”text/plain”。
以下为三者的区别:

> application/x-www-form-urlencoded

该属性值是通过表单发送数据时默认的编码类型,如果未在HTML的from标签中设置enctype属性,则默认值就是application/x-www-form-urlencoded。设置该属性值后,会将表单中发送的数据编码为“名称/值”对,这是标准的编码格式。当表单的Action为POST时,浏览器会将表单数据封装到http请求的body中,然后发送到服务器。当表单的Action为GET时,会将表单中发送的数据转换成一个字符串(name1=value1&name2=value2),然后把该字符串附加到URL后面,并用?分割,接着就请求这个新的URL。

> multipart/form-data

在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时,“application/x-www-form-urlencoded”这种编码方式效率比较低。因此在文件上传时,所使用的编码类型是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上传。
浏览器端表单的Enctype属性值设置为multipart/form-data时,则表示传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是POST方法,的type属性必须是file。(表单里有图片上传也需要设置Enctype=”multipart/form-data”)。如下:

<form name="userInfo" method="post" action="second_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类型控件时,如果希望它能正常工作,则必须设置Enctype为”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对象
SmartUpload su = new SmartUpload();
//取数组值
su.getRequest().getParameterValues();
//取单个参数单个值
su.getRequest().getParameter( );

> text/plain

数据以纯文本形式进行编码,其中不含任何控件或格式字符

> 关于”application/x-www-form-urlencoded”和”multipart/form-data”的消息区别

可以看下面的例子:
这是一个表单,有2个表单域:name和email
---------------------------------------------
| field     value                     |
| name:  ryan ou                      |
| email:  ryan@rhythmtechnology.com   |
---------------------------------------------

在 application/x-www-form-urlencoded 消息中:

//不同的field会用"&"符号连接;空格被替换成"+";field和value间用"="联系等等
name=ryan+ou&email=ryan@rhythmtechnology.com

在multipart/form-data 消息中:

//每个field被分成小部分,而且包含一个value是"form-data"的"Content-Disposition"的头部;一个"name"属性对应field的ID等等
-----------------------------7cd1d6371ec
Content-Disposition: form-data; name="name"ryan ou
-----------------------------7cd1d6371ec
Content-Disposition: form-data; name="email"ryan@rhythmtechnology.com
-----------------------------7cd1d6371ec
Content-Disposition: form-data; name="Logo"; filename="D:\My Documents\My Pictures\Logo.jpg"
Content-Type: image/jpeg

HTML源码中 form 标签的 enctype 属性相关推荐

  1. html表单 传递 符号,HTML源码中 form 标签的 enctype 属性

    定义:enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码.默认地,表单数据会编码为 "application/x-www-form-urlencoded".即在发 ...

  2. 云豹短视频app源码中,标签选择功能的实现

    在国内任意短视频app中,都能够看到"贴标签功能",云豹短视频app源码作为紧跟行业潮流的成品商业源码,自然也有该功能的实现,在云豹短视频app源码中,标签选择功能的实现要求是这样 ...

  3. html自动跳转到action,html中form标签的action属性

    html中form标签的action属性 发布时间:2020-05-12 11:48:46 来源:亿速云 阅读:636 作者:Leah 今天小编就为大家带来一篇html中form标签的action属性 ...

  4. HTML form 标签的 enctype 属性

    1. enctype 的定义和用法 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "application/x-www-form-urle ...

  5. form标签的enctype属性

    enctype属性规定在将表单数据发送到服务器之前如何对其进行编码.也就是通过表单发送数据时默认的编码类型. 只有在method = "post"时才能使用; 属性值: (1)ap ...

  6. js修改form标签的enctype属性

    提交文件的时候,在页面一般都是这么写的 <html:form action="/test/KnwlgStop.do?action=initAuditMain"method=& ...

  7. [html] 关于<form>标签的enctype属性你有哪些了解?

    [html] 关于标签的enctype属性你有哪些了解? form 标签的 enctype 属性指定将数据回发到服务器时浏览器如果对表单数据进行编码,其有三种编码形式:application/x-ww ...

  8. form标签的action属性怎么用?form标签action属性的用法介绍(附实例)

    本篇文章主要的介绍了关于HTML中form标签action属性的用法介绍和实例,还有关于form标签的action属性的定义和语法介绍,最后徐还有关于form标签的action属性的作用解释.现在让我 ...

  9. 第三篇:属性_第二节:控件属性在页面及源码中的表示方式

    一.属性在页面及源码中的表示方式 认真地看看页面中声明控件的代码,你会发现控件属性在页面中的表示千变万化.我们看看下面这些: <%@ Page Language="C#" A ...

最新文章

  1. 思维dp ---- CF41D Pawn [可达状态统计dp]
  2. python飞机大战3关BOSS
  3. 阿里云获工信部CDN业务经营许可 云计算业内资质最全
  4. 中兴通讯徐子阳:不破不立 用“加减乘除”建理想5G
  5. mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
  6. TCP模块的断开操作
  7. 【学术】论文写作葵花宝典
  8. c语言输入括号配对成功输出1,用数组实现括号配对检查,输出不正确,请大家指点解决办法...
  9. python 找出日期_Python-在字符串中查找日期
  10. PSFTP上传文件到服务器
  11. php 字符串压缩,PHP 压缩字符串的几种方法
  12. ajax中GET和POST区别
  13. 简洁高效的JQuery
  14. MPC5744-LINFlexD
  15. python学习__tsv文件写入多余空行问题
  16. 金九银十|前端真实面试知识点梳理
  17. 点击化学试剂DBCO-PEG-MMPs 二苯并环辛炔-聚乙二醇-基质金属蛋白酶
  18. 关于redis做秒杀库存扣减的生产实践及思考
  19. 致远小场景方案之从外部推送待办
  20. 嫌苹果鼠标(magic mouse)的灵敏度(跟踪速度)设置最大了都不够快,妙控板(magic trackpad)的灵敏度(跟踪速度)设置最大了都不够快(苹果鼠标/妙控板命令行设置灵敏度)

热门文章

  1. php原创程序,在线伪原创程序php版
  2. java 10进制转16进制带ox格式输出
  3. 武汉理工大学本科生毕业设计(论文) LaTeX 模板 武理 毕设 latex 模板 WHUT Latex Template
  4. 6、通道(Channels)
  5. 视频教程-web前端经典教程之电商专题页开发-HTML5/CSS
  6. Vue中Vuex的五个属性和基本用法
  7. msm8909的摄像头调试记录
  8. 秒杀网站如何用云支撑?
  9. java jce配置_[JAVA special] JCE三种方法让AES支持256位keySize
  10. 整理了12个必备的Python函数,建议收藏