java.lang.NullPointerException: не был установлен FileItemFactory - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь реализовать fileUpload, но я получаю сообщение об ошибке, описанное ниже.

Я проверил этот документ , НО Я НЕ ПОНИМАЛ ПРОБЛЕМУ В МОЕМ КОДЕКЕ; проблема в строке 46, которую я отметил в коде.

Кто-то, пожалуйста, помогите мне с решением.

     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)

1 Ответ

3 голосов
/ 21 февраля 2012

При догадке это потому, что вы используете upload, который не был инициализирован с DiskFileItemFactory вместо servletFileUpload, который был.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...