1.问题描述:
jsp页面中常常有表单元素,有时候需要在该
中使用文件上传标签,为了实现文件上传功能,需要将元素进行二进制封装,此时如果该form中还有普通类型的表单元素,使用request.getParameter(“**”)是无法获取普通表单元素的值的,必须使用smartupload.getRequest().getParameter()才可以获取普通表单元素的值,并且要注意该句话一定要在smartupload.upload()之后执行,否则即使使用smartupload获取,得到的也是null值。2.debug过程:
Test.jsp
由于
,表单中所有内容都变成二进制形式向后传送,在目的页面receive.jsp中直接使用request.getParameter()获取的值是null
receive.jsp
运行结果:
model: null
由上面的运行结果可以看到,直接使用request.getParameter("model")获取封装成二进制形式的表单元素,结果=null
所以想到应该借助于smartupload对象来获取混合表单中的普通表单标签的值,如下程序所示:
接收上述封装成二进制的普通表单元素
model:
结果:
接收上述封装成二进制的普通表单元素
model:null
咦?不是说使用smartupload对象可以获取封装成二进制的普通表单元素吗?为什么得到的结果也是null?
哈哈,下面我们就来看看到底是为什么?
答:你只是声明了一个smartupload对象而已,并没有执行上传操作,所以获得的值当然是null啦,正确的编程方法如下:
接收上述封装成二进制的普通表单元素
upload.initialize(pageContext);//初始化上传操作// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
upload.setAllowedFilesList("zip,tar,gz");// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有//扩展名的文件。//su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
upload.upload();//上传准备StringmodelName=upload.getRequest().getParameter("model");%>
model:
运行结果:
接收上述封装成二进制的普通表单元素
model: modelname用户输入的值