为什么上传文件的表单里要加个属性 enctype

上传文件的表单中<form>要加属性enctype="multipart/form-data"

为什么上传文件的表单里要加个属性 enctype

其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype="application/x-www-form-urlencoded".这个属性管理的是表单的MIME编码,共有三个值可选:

①application/x-www-form-urlencoded (默认值)

②multipart/form-data

③text/plain

application/x-www-form-urlencoded是默认值;在AJAX里,有这样的写法:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");就是设置表单传输的编码,在ajax中不写的话会报错,但是在html中,默认HTML表单就是这种传输编码类型,所以可以不写;

multipart-form-data是用来指定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或者mp3等等;

text/plain是纯文本传输的意思,在发送邮件时要设置这种编码类型,否则会出现接收时编码混乱的问题,网络上经常拿text/plain和text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据。