表单属性enctype="multipart/form-data"

首先知道enctype这个属性管理的是表单的MIME编码。共有三个值可选:
1、application/x-www-form-urlencoded
2、multipart/form-data
3、text/plain
其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码。例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlencoded");如果不写会报错的,但是在html的form表单里是可以不写enctype=application/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-gzip,x-tar等。事实上这些类型运用的很广泛,已经成为了事实标准。只要客户机和服务器共同承认这个MIME类型,即使它是不标准的类型也没有关系,客户程序就能根据MIME类型,采用具体的处理手段来处理数据。而Web服务器和浏览器(包括操作系统)中,缺省都设置了标准的和常见的MIME类型,只有对于不常见的 MIME类型,才需要同时设置服务器和客户浏览器,以进行识别。
----------------------------------------------------------------
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;
只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,
所以request就得不到值了。也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:

SmartUpload su = new SmartUpload();//新建一个SmartUpload对象

su.getRequest().getParameterValues();取数组值

su.getRequest().getParameter( );取单个参数单个值

时间: 2024-10-27 14:10:50

表单属性enctype="multipart/form-data"的相关文章

form表单的enctype=‘multipart/form-data‘

enctype='multipart/form-data' HTML forms provide three methods of encoding. application/x-www-form-urlencoded (the default) multipart/form-data text/plain 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么 写,知其然而不知其所以然. 那到底

C# form表单提交enctype=&quot;multipart/form-data&quot; 与 enctype=&quot;application/x-www-form-urlencoded&quot; 两者之间的区别

1.application/x-www-form-urlencoded GET方式,会将表单中的数据(键值对)经过urlencode编码后追加到url中. POST方式,会将表单中的数据经过urlencode编码后放在request body 中. 2.multipart/form-data 当需要在表单内上传文件时(二进制流数据)时,就需要使用 multipart/form-data. "application/x-www-form-urlencoded",他是默认的MIME内容编码

表单的enctype=&quot;multipart/form-data&quot;

在通过表单上传文件的时候,需要输入enctype="multipart/form-data" 最早的HTTP POST是不支持文件上传的,给编程开发带来很多问题.但是在1995年,ietf出台了rfc1867,也就是<RFC 1867 -Form-based File Upload in HTML>,用以支持文件上传.所以Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据.因此发送post请求时候,表单<form&

form 表单添加 enctype =&quot;multipart/form-data&quot; 属性后后台接收中文乱码

解决办法: new String( request.getParameter("title").getBytes("ISO-8859-1"),"utf-8") ISO-8859-1 是你jsp页面默认的编码,一般新建一个jsp页面最顶端可以看到默认编码pageEncoding=

HTML5 学习笔记 表单属性

HTML5新的表单属性 HTML5 的form和input 标签添加了几个新的属性 <form>新属性 autocomplete novalidate input 新属性 autocomplete autofocus form formaction formenctype formmethod formnovalidate formtarget height and width list min and max multiple pattern (regexp) placeholder req

HTML5 表单属性

1.HTML5 新的表单属性 HTML5 的 <form> 和 <input>标签添加了几个新属性. <form>新属性:autocomplete.novalidate <input>新属性:autocomplete.autofocus.form.formaction.formenctype.formmethod.formnovalidate.formtarget.height and width.list.min and max.multiple.patt

html5中新增的form表单属性

html5中新增两个表单属性,分别autocomplete和novalidate属性 1.autocomplete属性 该属性用于控制自动完成功能的开启和关闭.可以设置表单或者input元素,有两个属性值,当设置为on时,启动该功能:当设置off时,关闭该功能.启用该功能后,当用户在自动完成域开始输入时,浏览器就会在该域中显示填写的选项.用户每提交一次,就会增加一个用于选择的选项 <!DOCTYPE html> <html> <head lang="en"

前端html--超链接,表格,表单属性

1. 图片与超链接 1. 图片标签 <img src=""> 默认按照图片原始尺寸显示 标签属性 : 1. width : 取px为单位的像素值,设置图片宽度 2. height : 取像素值,设置图片的高度 3. title : 用来设置鼠标悬停于图片上方时的显示文本 4. alt : 当图片加载失败时显示的文本 注意 : 宽高尺寸可以只给一个值,另外一个方向会自适应 2. 超链接标签 1. 什么是超链接 能够实现文件跳转的文本,叫超链接文本 2. 使用超链接 1. 语法

HTML 5 服务器发送事件、Input 类型、表单元素、表单属性

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新. Server-Sent 事件 - 单向消息传递 Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. 例子:Facebook/Twitter 更新.估价更新.新的博文.赛事结果等. 浏览器支持 所有主流浏览器均支持服务器发送事件,除了 Internet Explorer. 接收 Server