控件:commons-fileupload-1.2.1.jar
当上传文件的时候表单,表单这个写:
<form name="" action="xx.do" method="post" enctype="multipart/form-data"> <input type="file"> <input type="text" name="username"> </form>
这个时候获取username表单参数的时候,不能用request.getParameter(“username”),这个样无论如何获取到的都是null,这句需要控件来帮助获取值。
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(request.getCharacterEncoding());
Map<String,String> paramMap = new HashMap<String,String>(6);
try {
List items = upload.parseRequest(req);
Iterator itr = items.iterator();
String fileName=null;
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if(item.isFormField()) {
String name = item.getFieldName();
String value = item.getString(request.getCharacterEncoding());
paramMap.put(name, value);
} else {
if (item.getName() != null && !item.getName().equals("")) {
fileName = item.getName();
File file = new File(RESOURCE_PATH,fileName);
item.write(file);
paramMap.put("src", fileName);
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
通过”item.isFormField()“来获取表单字段的值,同时itme.getString(request.getCharacterEncodring()).来解决字符乱码的问题。这个地方尤其要注意。