您的位置:首页 > Web前端 > JavaScript

简单解决 multipart/form-data 文件上传表单中 传递参数无法获取的办法! (解决办法:动态更改表单提交URL)

2012-05-09 14:02 1201 查看
在jsp(其它动态web页面好像也存在)中,如果要上传文件,表单的enctype就必须设定为"multipart/form-data"了,这样就能够传递文件数据,却无法传递参数,如下的表单:

[xhtml] view plaincopyprint?
01.<form action="uploadImage.jsp" method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
02.请选择上传的图片
03. <input type="hidden" name="action" value="upload" />
04.    <input type="file" name="file">
05.<input type="submit" name="Submit" value="上传">
06.    </form>
<form action="uploadImage.jsp" method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
请选择上传的图片
<input type="hidden" name="action" value="upload" />
<input type="file" name="file">
<input type="submit" name="Submit" value="上传">
</form>

这是本人程序中的一段代码,本人是想传递一个参数过去的,可是怎么都无法传递过去,request.getParameter("action")总是null,开始还以为是程序问题,后来在百度上一看,发现大家都存在这个问题。

解决方法一:

通过实验发现在表单中的URL中附加参数可以在提交表单后获取到值,采用固定参数的方式,于是将上面的表单改为如下:

[xhtml] view plaincopyprint?
01.<form action="uploadImage.jsp?action=upload" method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
02.请选择上传的图片
03.    <input type="file" name="file">
04.<input type="submit" name="Submit" value="上传">
05.    </form>
<form action="uploadImage.jsp?action=upload" method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
请选择上传的图片
<input type="file" name="file">
<input type="submit" name="Submit" value="上传">
</form>

request.getParameter("action")="upload",问题解决。当然这样的解决方法不是很完美,但是相比那些复杂的解决办法来说,这个是最简单的。

解决方法二:

在实际开发中可能一个表单会根据实际情况提交到不同的URL的情况,这种情况在采用了MVC的框架中尤其常见。最近几年时间里周公比较少写网页代码,偏重于设计和业务逻辑处理了,不过最近自己研究时遇到这么一个情况,发现一个不错的方法。原理是将原来的提交表单更改为普通的按钮,点击按钮时调用一个javascript方法,在这个方法里根据业务逻辑动态更改表单提交的URL,然后再调用javascript提交表单,经过验证不但能解决上面的问题,而且处理方式更灵活。代码如下:

[xhtml] view plaincopyprint?
01.<script language="javascript" type="text/javascript"><!--
02.    //动态更改表单提交URL的示例
03.    //代码:周公
04.    //日期:2010-03-18
05.    function changeSubmitUrl()
06.    {
07.        //定义表单要提交的URL,这里可以根据逻辑动态更改,甚至可以采用<%= url %>这种方式
08.        var url="uploadImage.jsp?action=upload";
09.        //将表单的action的URL更改为我们希望提交的URL
10.        document.form1.action=url;
11.        //利用Javascript提交表单
12.        document.form1.sumbit();
13.    }
14.// --></mce:script>
15.<form  method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
16.请选择上传的图片
17.    <input type="file" name="file">
18.<input type="button" name="Submit" onclick="javascript:changeSubmitUrl();" value="上传">
19.    </form>
<script language="javascript" type="text/javascript"><!--
//动态更改表单提交URL的示例
//代码:周公
//日期:2010-03-18
function changeSubmitUrl()
{
//定义表单要提交的URL,这里可以根据逻辑动态更改,甚至可以采用<%= url %>这种方式
var url="uploadImage.jsp?action=upload";
//将表单的action的URL更改为我们希望提交的URL
document.form1.action=url;
//利用Javascript提交表单
document.form1.sumbit();
}
// --></mce:script>
<form  method="post" enctype="multipart/form-data" name="form1" onsubmit="javascript:checkForm(this);">
请选择上传的图片
<input type="file" name="file">
<input type="button" name="Submit" onclick="javascript:changeSubmitUrl();" value="上传">
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐