转自:http://www.cnblogs.com/mooncher/archive/2012/06/08/2542115.html
解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
使用jspsmartupload表单中enctype="multipart/form-data"的意思,是设置 表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了 multipart/form-data,才能完整的传递文件数据
但是设置了 enctype="multipart/form-data" ,除了file类型表单能获取到,其他value通过request.getParameter都得不到。这种情况下我们可以利用组件来解决该问题,例如用 jspsmartupload组件
com.jspsmart.upload.SmartUpload su = new com.jspsmart.upload.SmartUpload();
su.initialize(pageContext);
su.service(request, response);
su.setTotalMaxFileSize(100000000);
su.setAllowedFilesList("zip,rar");
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
su.upload();
String Name = su.getRequest().getParameter("Name");
String TYPE_ID = su.getRequest().getParameter("Type");
通过 su.getRequest().getParameter("value");就可以了,su.upload()好象必须放在前面,测试中将su.upload()放在获取参数后面不成功。
关于用jspSmartUpload控件上传文件并附带参数的吐血体验
url:http://blog.csdn.net/thinker28754/archive/2007/05/26/1626844.aspx
用于上传数据的表单:
<form name="form1" method="post" action="servlet/Upfile" enctype="multipart/form-data">
<p>请输入手机号</p>
<p>
<input type="text" name="phone" value="1234567890"/>
</p>
<p>图片上传(仅现于*.gif和*.jpg文件)</p>
<p>
<input type="file" name="file1"/>
</p>
<p>
<input type="submit" name="submit" value="· 提交 ·"/>
</p>
</form>
提交的后台的servlet
SmartUpload su =new SmartUpload();
su.initialize(this.getServletConfig(), request, response);
String realPath = this.getServletContext().getRealPath("");
String path=realPath+"/images";
su.setAllowedFilesList("gif,jpg");
su.upload();
int count=su.save(path);
msdnid=su.getRequest().getParameter("phone");//注意这是接收表单传过来的参数
System.out.println("msdnid="+msdnid);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
特别说明:用于接收表单参数的语句一定要放在su.upload();语句的后面,也就是说要在文件上传后再接收,否则
不管你怎么试接收到的结果总是"null".
这是我在苦苦试了一天在晕到前的2分钟试出来的,真的不容易呀!!!!!
在上述问题得到解决后,当所传的参数为汉字时则接收到的全是乱码,经过反复实验将表单页面的编码格式设成"gb2312"就解决了这个问题.
分享到:
相关推荐
encType="multipart/form-data" 根据上传不同,主要分两步,可以有效的解决request.getParameter(String s)是null值
另一个需要注意的问题是,当涉及文件上传时,`<form>`标签必须包含`enctype="multipart/form-data"`属性。这是因为文件上传的数据格式是multipart/form-data,而不是默认的application/x-www-form-urlencoded。后者...
- **request.getParameter("xxx")**: 在表单的enctype设置为`multipart/form-data`时,此方法将不再有效。此时它总是返回`null`。 - **ServletInputStream request.getInputStream()**: 包含整个请求的数据,包括...
<form action="fileAction" method="post" enctype="multipart/form-data"> <input type="text" name="name" placeholder="Name"/> <input type="text" name="user" placeholder="User"/> <input type="file" ...
- 表单的`enctype`属性必须设置为`multipart/form-data`才能支持文件上传。 - 使用`<c:forEach>`标签遍历上传的文件列表,并提供下载链接。 ##### 2. Servlet处理逻辑 Servlet是Java Web应用的核心部分,负责...
3. **指定编码类型**:为了让表单能够正确地发送文件数据,需要将`enctype`属性设置为`multipart/form-data`。这样服务器才能正确解析接收到的文件数据。 ```html <form action="" method="post" enctype=...
<form action="uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /> </form> ``` 这里的`enctype="multipart/form-data"`...
<form action="upload.jsp" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="上传文件" name="submit"> </form> ``` 这里...
在JSP中,我们通常使用`<form>`元素来创建一个文件上传表单,设置`enctype="multipart/form-data"`,这样浏览器会知道需要处理二进制文件。例如: ```html <form action="uploadServlet" method="post" enctype=...
flag=1" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file"> <input type="hidden" name="file"> <input type="submit" name="Submit" value="上传"> </form></td> </tr> ...
表单的`enctype`属性必须设置为`multipart/form-data`,以支持文件上传。 ```html <form action="uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type=...
表单的`enctype`属性需要设置为`multipart/form-data`,以便能够传输二进制数据,如图片。 ```html <form action="uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="image...
<form method="POST" action="uploadFile2.jsp" name="PW" enctype="multipart/form-data"> <table cellspacing="0" cellpadding="3" border="1" width="474"> <!-- 输入字段 --> </table> </form> </p> </BODY> </...
<form action="uploadImage.do" method="post" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit" value="上传" /> </form> ``` 对于显示图片,可以使用一个链接指向`...
<form action="uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="userFile" /> <input type="submit" value="上传" /> </form> ``` 2. 编写Servlet处理文件上传:在Servlet...
<form action="upload.jsp" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` #### JSP上传逻辑 在后端,JSP页面处理上传请求...
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> </body> </html> ``` 这个表单提交到"/upload",对应...
2. **MIME类型**:表单的`enctype`属性必须设置为`multipart/form-data`,以支持文件上传。 3. **数据格式**:数据会被组织成一系列的键值对,并使用特定的边界(boundary)字符串分割不同部分的数据。每个部分...
<form action="uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload File" name="submit"> </form> ``...