HTML表单的enctype属性详解

jackxiang 2009-10-26 14:04 | |
Form的表头中有这样一句,  
  encType="multipart/form-data"  
  代表什么意思?删除可以么?  
有下面几个值:  

<form action="./fileupload.php" method="post" enctype="multipart/form-data" enctype="application/x-www-form-urlencoded" enctype="text/plain">



MIME(多用途网际邮件扩充协议)的编码类型。  
  脚本里的用法是form.encoding=XXX

MSDN原文,我的翻译能力比较差。  

  Optional.   Describes   the   content   of   the   body   section   of   the   message.   It   can   have   one   of   the   following   values   (the   default   is   "text/plain;   charset=us-ascii"):    
  text/plain;   charset=us-ascii  
    
  This   means   that   this   is   a   regular   message,   and   the   body   section   contains   the   message   text.  
    
  Example:   Content-Type:   text/plain;   charset=us-ascii  
    
  application/x-ms-tnef  
    
  This   means   that   this   is   a   TNEF   message   and   the   body   section   contains   the   TNEF   data   of   the   message.  
    
  Example:   Content-Type:   application/x-ms-tnef  
    
  multipart/form-data;   boundary=boundary-string  
    
  This   means   that   the   form   and   body   section   have   multiple   parts,   and   each   part   describes   a   single   form   field   (name,   value,   and   so   on).   The   boundary-string   separates   multiple   parts   in   the   body   section   (see   Body   Section).  
    
  Example:   Content-Type:   multipart/form-data;  
  boundary=xyz12sssdeeggg  
  
注意:multipart/form-data是上传文件用的,不能删除。



用Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
下边是说明:
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。


用于表单里有图片上传。

<form name="userInfo" method="post" action="first_submit.jsp"  ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。
如下:

<tr>
    <td height="30" align="right">上传企业营业执照图片:</td>
    <td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"  ōnChange="checkimage()"></td>
  </tr>

就得加ENCTYPE="multipart/form-data"。


表单中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( );取单个参数单个值


当值很多时,使用数组传值是个不错的选择。

<input type='text' name='formVar[year1]' value=''>

function toHere($formVar)
{
    echo $formVar['year1'];
}

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2111/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]