首页 新闻 会员 周边

multipart/form-data与application/x-www-form...本质

0
[已解决问题] 解决于 2010-03-19 22:42
    FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。  
    然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。  
    在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。     
    Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。
问题既然是这样,我把所有表单的ectype都设置成"multipart/form-data"简单省事。
当然"multipart/form-data"情况下因为增加了分隔线boundary以及Content-Disposition等内容,请求的内容可能会稍比 “application/x-www-form-urlencoded”要多,难道只有这个原因吗?请问是否还有其它的原因。恳请大家的帮忙
chen eric的主页 chen eric | 初学一级 | 园豆:4
提问于:2010-03-12 16:37
< >
分享
最佳答案
0

下表显示通用的编码类型。

编码类型

说明

application/x-www-form-urlencoded

窗体数据被编码为名称/值对。这是标准的编码格式。

multipart/form-data

窗体数据被编码为一条消息,页上的每个控件对应消息

中的一个部分。

text/plain

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

格式字符。

这是硬性规定的,你可以参考  W3C 网站上对于这连个属性设置的解释。

针对你的回复我在补充回复如下:请参考http://www.w3school.com.cn/tags/att_form_enctype.asp中的说明。

application/x-www-form-urlencoded 在发送前编码所有字符(默认)。
multipart/form-data

不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。

这里说的明确,如果我们都使用multipart/form-data进行编码,那表单中如果我们提交部分需要编码的字符串怎么办???

西越泽 | 专家六级 |园豆:10775 | 2010-03-12 16:45
呵呵,兄弟,就你一个签案,没办法! 其实我问的不是这个,我是想知道为什么不总是用multipart/form-data 来代替 application/x-www-form-urlencoded ,因为除了multipart/form-data 传输的数据量稍多一些外,我找不出其它的原因
chen eric | 园豆:4 (初学一级) | 2010-03-17 14:12
使用multipart/form-data最后数据会以二进制形式提交给服务器,字符不需要编码不会对服务端的获取有影响。呵呵,谢谢你的热心回答。
chen eric | 园豆:4 (初学一级) | 2010-03-19 22:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册