form表单设置enctype="multipart/form-data"之后,上传文件,获取文件名、路径等都没有问题。
如果需要获取form中普通控件,比如type=“text”的值,使用request.getparameter(“xxx”)是无法成功的。
因为enctype将信息以二进制输入。
如何解决这个问题,网上很多,基本就一个意思,
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
JspFactory fac = JspFactory.getDefaultFactory();
PageContext pageContext=fac.getPageContext(this,request,response,null,false,JspWriter.DEFAULT_BUFFER,true);
su.initialize(pageContext);
su.service(request, response);
su.upload();
pwd = su.getRequest().getParameter("name_getpwd");//取单个参数单个值
System.out.println(pwd);
不过貌似试过了,不行。为什么了?暂不清楚。
仔细看代码,发现了isFieldForm这个函数,
可以在这里做点文章,
while(iter.hasNext()){
FileItem item = (FileItem)iter.next();
if(!item.isFormField()){
//表单名字
//String fieldName = item.getFieldName();
fileName = item.getName();
System.out.println(fileName);
}else if (item.getFieldName().equals("name_getpwd"))
{
pwd = item.getString();
System.out.println(pwd);
}
。。。。。。
这里需要注意的是,以上代码先取文件名,后取空间值,是因为上传form的顺序是先file后text,必须得根据这个顺序来取值。
ok