解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)

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

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

 

解决方法一:

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

 

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

 

解决方法二:

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

 

一点感想:

第一次发现这个问题是2006年9月14日,到最后比较圆满地解决这个问题则是2010年3月18日,跨越了几个年头,不知道别的技术人员是否有我这个毛病:只要是觉得解决不圆满的问题一定会放在心里,直到找到比较圆满的解决方法为止。

你可能感兴趣的:(form)