<%
..... code to check request is submitted or not ...
%>
<form method="post" action="" name="uploadform" enctype="multipart/form-data">
<table >
<tr>
<td>Select up to 3 files to upload</td>
</tr>
<tr>
<td>
<input type="hidden" name="newFileName" value="newUploadedFileName1">
<input type="file" name="uploadfile" >
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Upload">
<input type="reset" name="Reset" value="Cancel">
</td>
</tr>
</table>
</form>
上传文件的jsp帖子请求代码将位于&lt;%..%&gt;上方的同一页面中标签
如何使用if语句添加检查以检查是否单击了“提交”按钮,换句话说,是否发送了帖子请求。
我遵循了这个,http://www.java2s.com/Code/Java/JSP/SubmittingCheckBoxes.htm但它没有帮助,那就是调用不同的jsp文件(“formAction.jsp”)而不是在同一页面中。
if(request.getParameter("newFileName") != null) {
此语句始终为null值。我不知道为什么。
注意:这是一个具有此属性=&gt;的表单ENCTYPE = “多部分/格式数据”
如果我没有添加任何if语句,那么文件将首次上传,但下次如果我单击重新加载按钮或刷新页面,浏览器会提示我重新发送数据或重新上载以前的文件。我希望你能理解这个问题。如果有任何疑惑可以理解问题,请发表评论。
任何人都可以提供一些提示/解决方案吗?
答案 0 :(得分:8)
使用multipart/form-data
时,请求的编码方式与application/x-www-form-urlencoded
和consorts所依赖的标准getParameter()
编码不同。这就是为什么他们都返回null
。在能够确定提交的值之前,您需要将multipart/form-data
请求解析为合理的对象。为此,通常使用Apache Commons FileUpload或request.getParts()
。有关详细信息,请查看this answer。
或者,您也可以检查请求方法。正常请求(链接,书签等)始终是GET。提交上传文件的表单始终是POST。
if ("POST".equalsIgnoreCase(request.getMethod())) {
// Form was submitted.
} else {
// It was likely a GET request.
}
但这在JSP中没有任何意义。在JSP文件中编写原始Java代码是导致维护问题的原因。而是将表单提交给值得信赖的servlet,然后实现doPost()
方法。在servlet中,您可以自由编写Java代码,而无需考虑所有HTML。