日期:2014-05-18  浏览次数:20620 次

servlet中使用commons-fileupload上传文件和文本出现servlet不可用的问题
完全按照commons   fileupload官方的userguide写的一个上传方法,代码如下:
现在出现的问题是:
第一次访问这个servlet的时候会报错:
严重:   Allocate   exception   for   servlet   Fileupload2
java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactory
然后再访问就是404错误了,同时在tomcat控制台出现:

信息:   Servlet   Fileupload2   is   currently   unavailable

web.xml中的xml配置是没有问题的。

public   void   upload(HttpServletRequest   request,PrintWriter   out)   throws   Exception{
boolean   isMultipart;
List   city=new   ArrayList(1);
if(isMultipart   =   ServletFileUpload.isMultipartContent(request)){

DiskFileItemFactory   factory=new   DiskFileItemFactory();
factory.setSizeThreshold(20*1024);//设置缓存的大小,20K
//factory.setRepository(new   File( "/tem/a.temp "));                   //缓存目录/文件;
ServletFileUpload   upload=new   ServletFileUpload(factory);
upload.setFileSizeMax(20*1024*1024);//最大文件,20M

List   formlists=upload.parseRequest(request);

Iterator   iter=formlists.iterator();    
while(iter.hasNext()){     //循环获取表单中的内容
FileItem   formitem=(FileItem)iter;
if   (formitem.isFormField()){     //如果是文本内容
String   formname=formitem.getFieldName();//获取form中的名字
String   formcontent=formitem.getString();
formname=new   String(formname.getBytes(), "gb2312 ");
formcontent=new   String(formcontent.getBytes(), "gb2312 ");
if   (formname.equals( "city ")){
city.add(formcontent);
}

}
else   {               //如果是文件,则保存


}
}

if   (!city.isEmpty()){   //判断提交的表单内容是否为空
for   (int   i=0;i <=city.size()-1;i++){
out.println((String)city.get(i));
}
}  

}

}



------解决方案--------------------
dopost或者doget那???