title: HttpServletRequest#getParts() returns an empty list
body: <p>I have the following HTML form:</p>
  
  <pre><code>&lt;form enctype="multipart/form-data" method="post" action="/myservlet"&gt;
      &lt;input type="file" name="mptest"&gt;
      &lt;br /&gt;
      &lt;input type="submit" value="upload"&gt;
   &lt;/form&gt;
  </code></pre>
  
  <p>And I have the following servlet which I created based on <a href="https://stackoverflow.com/questions/2422468/how-to-upload-files-in-jsp-servlet/2424824#2424824">this answer</a>:</p>
  
  <pre><code>package com.functions;
  
  import java.io.*;
  // import java.sql.Connection;
  // import java.sql.PreparedStatement;
  // import java.sql.ResultSet;
  // import javax.servlet.RequestDispatcher;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.http.Part;
  
  // import com.functions.utility.DBConnector;
  public class restore extends HttpServlet {
  
      private static final long serialVersionUID = 8097085789553030042L;
  
      protected void doPost(HttpServletRequest request,
              HttpServletResponse response) throws ServletException, IOException {
          System.out.println("--------------------");
          System.out.println(" On restore.java ");
          System.out.println("--------------------");
          try {
              fetchDataFromDB(request, response);
          } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
  
      private void fetchDataFromDB(HttpServletRequest request,
              HttpServletResponse response) throws InterruptedException,
              IllegalStateException, ServletException {
          try {
              System.out.println("Test 1");
              for (Part part : request.getParts()) {
                  String filename = getFilename(part);
                  System.out.println("Test 2");
                  if (filename == null) {
                      System.out.println("Test 3");
                      // Process regular form field (input
                      // type="text|radio|checkbox|etc", select, etc).
                      String fieldname = part.getName();
                      System.out.println(fieldname);
                      String fieldvalue = getValue(part);
                      System.out.println(fieldvalue);
                      // ... (do your job here)
                  } else if (!filename.isEmpty()) {
                      System.out.println("Test 4");
                      // Process form file field (input type="file").
                      String fieldname = part.getName();
                      System.out.println(fieldname);
                      filename = filename
                              .substring(filename.lastIndexOf('/') + 1)
                              .substring(filename.lastIndexOf('\\') + 1); // MSIE
                                                                          // fix.
                      InputStream filecontent = part.getInputStream();
                      System.out.println(filecontent);
                      String[] command = new String[] {
                              "C:/Program Files (x86)/MySQL/MySQL Server "
                              + "5.5/bin/mysql",
                              "--user=root", "--password=root", "dummy", "-e",
                              "source "+"C:/Users/John/Desktop/LMS/backup.sql" };
                      Process restore = Runtime.getRuntime().exec(command);
                      int check = restore.waitFor();
                      System.out.println(check);
                  }
              }
          } catch (IOException ex) {
              ex.printStackTrace();
          }
      }
  
      private static String getFilename(Part part) {
          for (String cd : part.getHeader("content-disposition").split(";")) {
              if (cd.trim().startsWith("filename")) {
                  return cd.substring(cd.indexOf('=') + 1).trim()
                          .replace("\"", "");
              }
          }
          return null;
      }
  
      private static String getValue(Part part) throws IOException {
          BufferedReader reader = new BufferedReader(new InputStreamReader(
                  part.getInputStream(), "UTF-8"));
          StringBuilder value = new StringBuilder();
          char[] buffer = new char[1024];
          for (int length = 0; (length = reader.read(buffer)) &gt; 0;) {
              value.append(buffer, 0, length);
          }
          return value.toString();
      }
  }
  </code></pre>
  
  <p>But the for loop on <code>request.getParts()</code> is never entered. How is this caused and how can I solve it?</p>