jspsmartupload上传文件 servlet得不到jsp参数

原文出处:http://hi.baidu.com/sy0725/blog/item/abc8b9356fcdbc89a71e124b.html/cmtid/ca3259da911f8dd5b7fd48bc

2007-07-04 13:42
最近在做项目的时候用jspsmartupload上传文件,但是发现一个问题,用request.getParameter("name") 不能获得表单的数据,最后终于解决,留篇文章。

       原因很简单:

因为你用jspsmartuploadsmart时post请求 的格式是multipart/form-data,即enctype="multipart/form-data" ,这和默认form提交是不同的
不同主要体现在:传送到服务器端的数据组织格式不同,就是说协议不一样(在3W官网上能找到相关格式说明文件)。 而现在的WEB容器对HttpServletRequest 方法getParameter(str)的实现都是按照默认协议。这也就难怪直接用request.getParameter()取到的值为null了。

解决方法是:

用smartupload里已经提供了专门的方法,
不能用普通的request.getParameter()
而要用upload.getRequest()就可以使用了

例子:

SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
// su.setMaxFileSize(10000);
// 2.限制总上传数据的长度。
// su.setTotalMaxFileSize(20000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
//su.setAllowedFilesList("xml");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
   su.upload();

String softname=su.getRequest().getParameter("softname");

注意:一定要在su.upload();,之后取得!!