09-10
19
关于使用jspSmartUpload组件后request.getParameter()无法读出表单属
作者:Java伴侣 日期:2009-10-19
关于使用jspSmartUpload组件后request.getParameter()无法读出表单属性的问题
使用jspSmartUpload组件最大的问题就是,无法用request.getParameter()无法读出表单属性的值。原因是在form表单里加了ENCTYPE="multipart/form-data"这么一句话,那么提交过去的数据可能就变成一种二进制的,jsp页面无法读取的格式了。
在网上找了很多答案,发现解决方法很多,但是都不够简捷。有的推荐的方法甚至是不成功的(例如:mySmartUpload.getRequest().getParameter("user")等等)。
后来自己调试了一下,发现用javascript解决最简单了。例如:
其中隐藏表单域,uploadfilename要获得文件名,点击SUBMIT,上传按钮后调用doAction()方法,然后在javascript里面定义action的提交地址,返回后提交表单。
<FORM name="form1" METHOD="POST" ACTION="jsp/upload.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE=FILE NAME="FILE1" SIZE="50"><BR>
<input TYPE="hidden" NAME="uploadfilename" value="">
<INPUT TYPE="SUBMIT" VALUE="上传" onclick = "return doAction()">
</FORM>
-----------------------------------------------------------------
<script type="text/javascript">
<!--
function doAction()
{
document.form1.uploadfilename.value =getFileName(form1.FILE1.value);
document.form1.action="jsp/upload.jsp?uploadfilename="+form1.uploadfilename.value;
return true;
}
function getFileName(str)
{
var n = str.lastIndexOf("\\");
if (n < 0)
n = str.lastIndexOf("\/");
if (n>=0)
{
str = str.substring(n+1);
}
return str;
}
-->
</script>
这样,我们在upload.jsp页面里就可以使用request.getParameter("uploadfilename");读取文件名了。
呵呵,这个方法应该是最简单了,欢迎拍砖指正。
使用jspSmartUpload组件最大的问题就是,无法用request.getParameter()无法读出表单属性的值。原因是在form表单里加了ENCTYPE="multipart/form-data"这么一句话,那么提交过去的数据可能就变成一种二进制的,jsp页面无法读取的格式了。
在网上找了很多答案,发现解决方法很多,但是都不够简捷。有的推荐的方法甚至是不成功的(例如:mySmartUpload.getRequest().getParameter("user")等等)。
后来自己调试了一下,发现用javascript解决最简单了。例如:
其中隐藏表单域,uploadfilename要获得文件名,点击SUBMIT,上传按钮后调用doAction()方法,然后在javascript里面定义action的提交地址,返回后提交表单。
<FORM name="form1" METHOD="POST" ACTION="jsp/upload.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE=FILE NAME="FILE1" SIZE="50"><BR>
<input TYPE="hidden" NAME="uploadfilename" value="">
<INPUT TYPE="SUBMIT" VALUE="上传" onclick = "return doAction()">
</FORM>
-----------------------------------------------------------------
<script type="text/javascript">
<!--
function doAction()
{
document.form1.uploadfilename.value =getFileName(form1.FILE1.value);
document.form1.action="jsp/upload.jsp?uploadfilename="+form1.uploadfilename.value;
return true;
}
function getFileName(str)
{
var n = str.lastIndexOf("\\");
if (n < 0)
n = str.lastIndexOf("\/");
if (n>=0)
{
str = str.substring(n+1);
}
return str;
}
-->
</script>
这样,我们在upload.jsp页面里就可以使用request.getParameter("uploadfilename");读取文件名了。
呵呵,这个方法应该是最简单了,欢迎拍砖指正。
评论: 0 | 引用: 0 | 查看次数: 339
发表评论