form表单里的enctype属性管理的是表单的MIME编码,它规定在发送表单数据之前如何对其进行编码。
enctype属性值 | 含义 |
---|---|
application/x-www-form-urlencoded | 发送前编码所有字符(默认属性) |
multipart/form-data | 不对字符进行编码,在使用包含文件上上传控件的表单时,必须使用该值 |
text/plain | 空格转化为+加号,但不对特殊字符编码 |
默认来说,表单数据会编码为“application/x-www-form-urlencoded”即在发送到服务器之前,所有的字符都会进行编码,把空格转化为+符号,特殊符号转换成ASCII HEX值(即ascii码的十六进制值)。一般在ajax中要写xmlHttp.setRequestHeader(“Content-Type”,“application/z-www-form-urlencoded”);不写会报错,但是在html中的form表单可以不写。
multipart/form是用来制定传输数据的特殊类型的,它以二进制格式来传输。主要就是上传非文本内容,比如图片或者mp3。一般上传完整文件时使用。
text/plain是传输纯文本内容的,一般在发邮件时设置此种编码类型,否则就会出现接受时编码混乱问题。text/plain是用来传输纯文本文件的,text/html使用来传输html代码的编码类型。发送头文件时才用得上。
注意:application/x-www-form-urlencoded 不能用于文件上传,只有使用了multipart/form-data的表单才能完整的传递文件数据。