`
chmod777
  • 浏览: 45462 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

form的enctype和action

阅读更多
form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。

当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server。

如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。
但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
如果有以下form,并选择了file1.txt上传
<form action="http://server.com/cgi/handle"
       enctype="multipart/form-data"
       method="post">
   <input type="text" name="submit-name" value="chmod777"><br />
   What files are you sending? <input type="file" name="files"><br />
</form>

则有如下body:
Content-Type: multipart/form-data; boundary=AaB03x

   --AaB03x
   Content-Disposition: form-data; name="submit-name"

   chmod777
   --AaB03x
   Content-Disposition: form-data; name="files"; filename="file1.txt"
   Content-Type: text/plain

   ... contents of file1.txt ...
   --AaB03x--
以上是我看了http://www.w3.org/TR/html401/interact/forms.html#h-17.13.1的理解,可能有误。:)

分享到:
评论
2 楼 helloqidi 2009-06-16  
很好,不过,下面这段话也很重要啊

application/x-www-form-urlencoded 

This is the default content type. Forms submitted with this content type must be encoded as follows:

   1. Control names and values are escaped. Space characters are replaced by `+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by `%HH', a percent sign and two hexadecimal digits representing the ASCII code of the character. Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A').
   2. The control names/values are listed in the order they appear in the document. The name is separated from the value by `=' and name/value pairs are separated from each other by `&'.
1 楼 suntine 2009-01-16  
这么好的文章,怎么没人顶呢?

相关推荐

    java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法 ?

    在Java Web开发中,我们经常遇到表单提交数据的情况,特别是涉及到文件上传时,`&lt;form&gt;`标签的`ENCTYPE`属性通常会被设置为`multipart/form-data`。这是因为`multipart/form-data`允许在请求中携带二进制数据,如...

    multipartform-data 参数传递

    &lt;form method="POST" id='form2' name='form2' action="${weiboPublictUrl}" ENCTYPE="multipart/form-data"&gt; &lt;textarea id="status" name="status" rows="2" cols="60"&gt;&lt;/textarea&gt; ()" value="PublicWeibo"/&gt;...

    jQuery动态设置form表单的enctype值(实现代码)

    // 同样,也可以设置其他属性,如action和method $("#myForm").attr("action", "upload.php"); $("#myForm").attr('method', 'POST'); // 如果需要在特定的frame中处理响应,可以设置target属性 var frameId =...

    关于applicationx-www-form-urlencoded等字符编码的解释说明

    application/x-www-form-urlencoded是默认的编码格式,当action为get时,浏览器会将form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。当action...

    Form表单标签的Enctype属性的作用及应用示例介绍

    Enctype :指定将数据回发到服务器时浏览器使用的编码类型。用于表单里有图片上传。 编码类型有以下三种: application/x-...form action=”${pageContext.request.contextPath}/imageUpload_saveOrUpdat

    struts2+jquery之form插件实现异步上传

    &lt;form id="uploadForm" action="upload.action" method="post" enctype="multipart/form-data"&gt; 上传 &lt;/form&gt; ``` 2. **jQuery和form插件引入**:在HTML文件中引入jQuery库和form插件的脚本。 ```html ...

    在一个form表单里同时上传多个文件和文本信息的解决方案

    &lt;form method="post" action="up.htm" enctype="multipart/form-data"&gt; 文件1:&lt;input type="file" name="file"/&gt;&lt;br&gt; 文件2:&lt;input type="file" name="file1"/&gt;&lt;br&gt; 描述:...

    Asp.Net MVC中jquery.form附件上传例子

    jQuery Form插件是jQuery库的一个扩展,它使得表单提交变得更加灵活和易于控制,特别是在处理文件上传时。在这个例子中,我们将探讨如何在Asp.Net MVC项目中实现这一功能。 首先,我们需要确保项目已经引用了必要的...

    JAVA表单上传多个文件 java web form表单上传多个文件.zip_form表单post提交

    &lt;form action="uploadServlet" method="post" enctype="multipart/form-data"&gt; 上传"&gt; &lt;/form&gt; ``` 这里的`enctype="multipart/form-data"`是关键,它指示浏览器以多部分数据格式发送表单数据,适合处理文件上传...

    自动生成式form表单

    form表单有两个关键属性——`method`和`action`。`method`定义了数据如何发送到服务器,通常有`GET`和`POST`两种方式。`GET`将数据附加到URL,而`POST`则将数据隐藏在请求体中。`action`属性指定了处理表单数据的...

    jquery文件上传js:jquery.form.js

    &lt;form id="myForm" action="/upload" method="post" enctype="multipart/form-data"&gt; 上传" /&gt; &lt;/form&gt; $(document).ready(function() { $('#myForm').ajaxForm({ beforeSubmit: function() { // 提交前的...

    Customer HTML Form

    - `enctype`属性:仅对`POST`方法适用,规定如何编码发送的数据,如`application/x-www-form-urlencoded`或`multipart/form-data`。 3. **表单验证**: - 使用内置的HTML5验证属性,如`required`、`min`、`max`、...

    Struts2上传和下载Action配置

    &lt;form action="upload.action" method="post" enctype="multipart/form-data"&gt; 选择文件" /&gt; 上传" /&gt; &lt;/form&gt; ``` 在服务器端,我们需要创建一个Action类来处理上传请求。Struts2会自动将文件内容封装到`...

    一个form多个submit处理案例

    - HTML5引入了`formaction`、`formenctype`、`formmethod`和`formtarget`等属性,可以在提交按钮上设置,以便指定不同的提交目标、编码类型、HTTP方法以及打开新窗口或框架。这样,不同的submit按钮可以根据这些...

    jQuery-Form-书本实例.rar

    &lt;form id="myForm" action="/submit" method="post" enctype="multipart/form-data"&gt; &lt;!-- 表单内容 --&gt; &lt;/form&gt; $('#myForm').ajaxForm({ dataType: 'json', success: function(data) { // 处理返回的JSON...

    java ssh上传文件代码

    SSH框架的结合使得开发者能够利用Struts2的MVC设计模式,Spring的依赖注入和事务管理,以及Hibernate的对象关系映射功能。下面,我们将详细探讨在Java SSH环境下实现文件上传的代码原理和步骤。 1. **Struts2上传...

    file文件和form表单同步上传

    &lt;form action="/upload" method="post" enctype="multipart/form-data"&gt; &lt;!-- 其他表单元素 --&gt; 上传"&gt; &lt;/form&gt; ``` 这里,`enctype="multipart/form-data"`是关键,它允许表单包含文件上传。 ### 文件和表单同步...

    form表单的详细总结

    3. `enctype`: 当`method`为`POST`时,指定数据编码类型,如`application/x-www-form-urlencoded`(默认)或`multipart/form-data`(用于文件上传)。 4. `name`: 为表单提供一个唯一标识符,方便在JavaScript或...

Global site tag (gtag.js) - Google Analytics