首先就是要设置表单的 enctype="multipart/form-data"
这样就会出现在后台用request。就得不到普通文本的值了
网上查了很多资料
估计也有4、5种解决方法,但是一一试了下,都不行
经过2天的痛苦,测试出来了jar包有问题,换了jar也就一种方法适合我
自己纪念下:
首先jar必须的2个:::commons-fileupload-1.2 commons-io(版本 要看自己框架和其他的一些兼容问题)
FileItemFactory fac=new DiskFileItemFactory();
FileUpload upload=new FileUpload(fac);
upload.setHeaderEncoding("utf-8");
List fileList =null;
fileList = upload.parseRequest(request);
Map reqMap = new HashMap();//保存文本
Iterator<FileItem> it = fileList.iterator();
String name ="";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {//如果是文件
name = item.getName();
name=name.substring(0,name.lastIndexOf("."))+new Date().getTime()+name.substring(name.lastIndexOf("."));//这里是在文件名中加入时间戳,防止名字重复
File file=new File(savePath+ File.separatorChar+ name);
item.write(file);
item.delete(); //释放输出流
}else{
//如果不是文件
reqMap.put(item.getFieldName(),item.toString());//保存在map中,要用时 取出
}
}