控件: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()).来解决字符乱码的问题。这个地方尤其要注意。