2012-02-21 22 views
0

我試圖實現fileUpload,但是我得到了下面描述的錯誤。java.lang.NullPointerException:沒有設置FileItemFactory

我查了this document,但我沒有理解我的代碼中的問題; 問題出現在我已在代碼中標記的第46行。

Someone Plz幫助我解決問題。

 private static final String UPLOAD_DIRECTORY = "d:\\"; 
    public void doPost(HttpServletRequest request,HttpServletResponse response){ 
     ServletFileUpload upload = new ServletFileUpload(); 

    if(ServletFileUpload.isMultipartContent(request)){ 


     FileItemFactory factory = new DiskFileItemFactory(); 

     ServletFileUpload servletFileUpload = new ServletFileUpload(factory); 

     try { 
Line 46---> error  List<FileItem> items = upload.parseRequest(request); 

      for(FileItem item : items){ 

        if(item.isFormField())continue; 

        String fileName = item.getName(); 
        if (fileName != null) { 
         fileName = FilenameUtils.getName(fileName); 
              } 
        File uploadedFile = new File(UPLOAD_DIRECTORY, fileName); 
        if (uploadedFile.createNewFile()) { 
         item.write(uploadedFile); 
         response.setStatus(HttpServletResponse.SC_CREATED); 
         response.getWriter().print("The file was created successfully."); 
         response.flushBuffer(); 
        }else{ 
         throw new IOException("The file already exists in repository."); 
        } 

      } 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 


     } 
    }else{ 
     try { 
      response.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,"Request contents type is not supported by the servlet"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    } 

錯誤產生:

java.lang.NullPointerException: No FileItemFactory has been set. 
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:354) 
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) 
    at com.server.FileUpload.doPost(FileUpload.java:46) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

回答

3

猜測,那是因爲你使用upload,這是不以DiskFileItemFactory初始化,而不是servletFileUpload,即得。