长安网站建设哪家好,软件开发工程师怎么考,国际外贸网站建设,企业直招平台为什么上传文件的表单里要加个属性 enctype 上传文件的表单中form要加属性enctypemultipart/form-data,很多人只是死记硬背知道上传表单要这么写#xff0c;知其然而不知其所以然。那到底为什么要添加这个属性呢#xff1f;它是什么意思呢#xff1f;它…为什么上传文件的表单里要加个属性 enctype 上传文件的表单中form要加属性enctypemultipart/form-data,很多人只是死记硬背知道上传表单要这么写知其然而不知其所以然。那到底为什么要添加这个属性呢它是什么意思呢它又有什么其他可选值呢其实form表单在你不写enctype属性时也默认为其添加了enctype属性值默认值是enctypeapplication/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的form表单里是可以不写 enctypeapplication/x-www-form-urlencoded的因为默认HTML表单就是这种传输编码类型。而 ②multipart-form-data是用来指定传输数据的特殊类型的主要就是我们上传的非文本的内容比如图片或者mp3等等。 ③text/plain是纯文本传输的意思在发送邮件时要设置这种编码类型否则会出现接收时编码混乱的问题网络上经常拿text/plain和 text/html做比较其实这两个很好区分前者用来传输纯文本文件后者则是传递html代码的编码类型在发送头文件时才用得上。①和③都不能用于上传文件只有multipart/form-data才能完整的传递文件数据。 上面提到的MIME它的英文全称是Multipurpose Internet Mail Extensions 多功能Internet 邮件扩充服务它是一种多用途网际邮件扩充协议在1992年最早应用于电子邮件系统但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器而通知手段就是说明该多媒体数据的MIME类型从而让浏览器知道接收到的信息哪些是MP3文件哪些是Shockwave文件等等。服务器将 MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。 简单说MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型当该扩展名文件被访问的时候浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名以及一些媒体文件打开方式。 浏览器接收到文件后会进入插件系统进行查找查找出哪种插件可以识别读取接收到的文件。如果浏览器不清楚调用哪种插件系统它可能会告诉用户缺少某插件或者直接选择某现有插件来试图读取接收到的文件后者可能会导致系统的崩溃。传输的信息中缺少MIME标识可能导致的情况很难估计因为某些计算机系统可能不会出现什么故障但某些计算机可能就会因此而崩溃。 检查一个服务器是否正确设置了MIME类型的步骤是 1. 在Netscape浏览器中打开服务器网页 2. 进入View菜单选择Page Info 3. 在弹出的窗口中点击上层框架中的EMBED 4. 在下层框架中查看MIME的类型是否为application/x-director或application/x-shockwave- flash如果是上述信息的话表明服务器已经正确设置了MIME类型而如果MIME类型列出的是文本内容、八位一组的数据或是其它形式均表明服务器的MIME类型没有设置正确。 如果服务器没有正确标明其发送的数据的类型服务器管理员应该正确添加相关信息具体操作方法非常简单快捷。 每个MIME类型由两部分组成前面是数据的大类别例如声音audio、图象image等后面定义具体的种类。 常见的MIME类型 超文本标记语言文本 .html,.html text/html 普通文本 .txt text/plain RTF文本 .rtf application/rtf GIF图形 .gif image/gif JPEG图形 .jpeg,.jpg image/jpeg au声音文件 .au audio/basic MIDI音乐文件 mid,.midi audio/midi,audio/x-midi RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio MPEG文件 .mpg,.mpeg video/mpeg AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/x-tar Internet中有一个专门组织IANA来确认标准的MIME类型但Internet发展的太快很多应用程序等不及IANA来确认他们使用的MIME类型为标准类型。因此他们使用在类别中以x-开头的方法标识这个类别还没有成为标准例如x-gzipx-tar等。事实上这些类型运用的很广泛已经成为了事实标准。只要客户机和服务器共同承认这个MIME类型即使它是不标准的类型也没有关系客户程序就能根据MIME类型采用具体的处理手段来处理数据。而Web服务器和浏览器包括操作系统中缺省都设置了标准的和常见的MIME类型只有对于不常见的 MIME类型才需要同时设置服务器和客户浏览器以进行识别。 ---------------------------------------------------------------- 表单中enctypemultipart/form-data的意思是设置表单的MIME编码。默认情况 这个编码格式是application/x-www-form-urlencoded不能用于文件上传 只有使用了multipart/form-data才能完整的传递文件数据进行下面的操作. enctypemultipart/form-data是上传二进制数据; form里面的input的值以2进制的方式传过去。 form里面的input的值以2进制的方式传过去 所以request就得不到值了。也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时用到下面的 SmartUpload su new SmartUpload();//新建一个SmartUpload对象 su.getRequest().getParameterValues();取数组值 su.getRequest().getParameter( );取单个参数单个值