html 表单 编码格式,表单提交时编码类型enctype详解_html/css_WEB-ITnose

的小伙伴,对其中的属性 enctype一定不会陌生,就是它规定了对表单提交给服务器时表单数据编码的内容类型(Content Type)。以下引用,摘自 HTML 4.01规范的Form章节:

enctype = content-type [CI]

This attribute specifies the content typeused to submit the form to the server

content type?这不就是我们在回调函数里判断返回数据的类型,并且是在请求头中的那个玩意儿吗?!没错!就是它!根据 HTML 4.01规范的基础数据类型的说明,这个content type 指定了连接资源的属性,同时也是MIME type的那些媒体类型。

表单编码类型

知道了表单编码由 enctype决定的,那么它究竟有多少可选的取值呢?是不是所有的MIME类型它都能用呢?

实际上,根据 HTML5 规范中所叙述的, enctype具有以下三种选项,其中最后一项 text/plain是相比4.01新增的。 application/x-www-form-urlencoded

multipart/form-data

text/plain

application/x-www-form-urlencoded

这是 默认的编码类型,使用该类型时,会将表单数据中 非字母数字的字符转换成转义字符,如"%HH",然后组合成这种形式 key1=value1&key2=value2;所以后端在取数据后, 要进行解码。

注意: 若表单中有文件,则只留文件名;

multipart/form-data

该类型用于 高效传输文件、非ASCII数据和二进制数据,将表单数据逐项地分成不同的部分,用指定的分割符分割每一部分。每一部分都拥有 Content-Disposition头部,指定了该表单项的键名和一些其他信息;并且每一部分都有可选的 Content-Type,不特殊指定就为 text/plain。下面给出一个采用 multipart/form-data编码类型的例子: Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="submit-name" Larry --AaB03x Content-Disposition: form-data; name="files"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x--

注意: 一般来说, method和 enctype是两个不同的互不影响的属性,但在传文件时, method必须要指定为 POST,否则文件只剩下filename了;

当没有传文件时, enctype会改回默认的 application/x-www-form-urlencoded。

text/plain

按照键值对排列表单数据 key1=value1\r\nkey2=value2,不进行转义。

注意: 若表单中有文件,则只留文件名;

application/json及其他MIME类型

另外,还需要说明表单数据编码类型 application/json,已经被W3C遗弃(详见 HTML JSON Form Submission),建议不要在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值