1.用到apache的commons-fileupload-1.2.2.jar,commons-io-1.4.jar
package com.jetsum.util; import java.io.File; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadUtil { private List<FileItem> fileItems; /** * 构造函数初始化fileItems对象,保存上传的文件信息。 * @param request * @throws Exception */ @SuppressWarnings("unchecked") public FileUploadUtil(HttpServletRequest request) throws Exception{ boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart == true) { try { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); setFileItems(upload.parseRequest(request)); } catch (Exception e) { e.printStackTrace(); } } else { throw new Exception("the enctype must be multipart/form-data"); } } /** * 将上传的文件保存在指定目录下,fileFiledName对应表单文件域名称,path对应保存目录。 * @param fileFiledName * @param path * @return * @throws Exception */ public File saveFile(String fileFiledName,String path) throws Exception{ File file = null; Iterator<FileItem> iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()&&!item.getName().equals("")) { if(fileFiledName.equals(item.getFieldName())){ file = FileUtil.createNewFile(path+"/"+item.getName()); item.write(file); } } } return file; } /** * 将上传的文件全部保存在指定目录下,path为保存文件的目录。 * @param path * @throws Exception */ public void saveFile(String path) throws Exception{ Iterator<FileItem> iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()&&!item.getName().equals("")) { File file = FileUtil.createNewFile(path+"/"+item.getName()); item.write(file); } } } public void setFileItems(List<FileItem> fileItems) { this.fileItems = fileItems; } public List<FileItem> getFileItems() { return fileItems; } }