1、需要两个Jar包分别是commons-io-1.4.jar,commons-fileupload-1.2.1.jar。

2、还需要在根目录下新建一个文件夹uploads,用于保存上传后文件。

3、下面是上传Servlet类源码:

 

   
   
   
   
  1. import java.io.*;  
  2. import java.util.*;  
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import org.apache.commons.fileupload.*;  
  6. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  7. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  8.  
  9. public class UploadServlet extends HttpServlet {  
  10.     private static final long serialVersionUID = -2201219701121037194L;  
  11.     private String savePath;  
  12.     private ServletContext sc;  
  13.  
  14.     public void init(ServletConfig config) {  
  15.         savePath = config.getInitParameter("savePath");  
  16.         sc = config.getServletContext();  
  17.     }  
  18.  
  19.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  20.             throws ServletException, IOException {  
  21.         doPost(request, response);  
  22.     }  
  23.  
  24.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  25.             throws ServletException, IOException {  
  26.         request.setCharacterEncoding("UTF-8");  
  27.         DiskFileItemFactory factory = new DiskFileItemFactory();  
  28.         ServletFileUpload upload = new ServletFileUpload(factory);  
  29.         try {  
  30.             List items = upload.parseRequest(request);// 上传文件解析  
  31.             Iterator itr = items.iterator();// 枚举方法  
  32.             while (itr.hasNext()) {  
  33.                 FileItem item = (FileItem) itr.next();  
  34.                 if (item.isFormField()) {// 判断是文件还是文本信息  
  35.                     System.out.println("表单参数名:" + item.getFieldName()  
  36.                             + ",表单参数值:" + item.getString("UTF-8"));  
  37.                 } else {  
  38.                     if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件  
  39.                         System.out.println("上传文件的大小:" + item.getSize());  
  40.                         System.out.println("上传文件的类型:" + item.getContentType());  
  41.                         // item.getName()返回上传文件在客户端的完整路径名称  
  42.                         System.out.println("上传文件的名称:" + item.getName());  
  43.                         // 此时文件暂存在服务器的内存当中  
  44.  
  45.                         File tempFile = new File(item.getName());// 构造临时对象  
  46.                         File file = new File(sc.getRealPath("/") + savePath,  
  47.                                 tempFile.getName());  
  48.                         // 获取根目录对应的真实物理路径  
  49.                         item.write(file);// 保存文件在服务器的物理磁盘中  
  50.                         request.setAttribute("upload.message""上传文件成功!");// 返回上传结果  
  51.                     } else {  
  52.                         request.setAttribute("upload.message""没有选择上传文件!");  
  53.                     }  
  54.                 }  
  55.             }  
  56.         } catch (Exception e) {  
  57.             e.printStackTrace();  
  58.             request.setAttribute("upload.message""上传文件失败!");  
  59.         }  
  60.         request.getRequestDispatcher("/uploadResult.jsp").forward(request,  
  61.                 response);  
  62.     }  
  63. }  
  64.  
  65.