title: Its not working!! Processing of multipart/form-data request failed. Unexpected EOF read on the socket
body: <p>I know this question has been asked previously but none of them helped me.
  I've tried every solution related to this question but didn't got the solution.</p>
  
  <p><strong>If anyone knows about this error It will be very helpful</strong></p>
  
  <p>My ajax code is :</p>
  
  <pre><code>    $('#versionForm').submit(function (e) {
  
      formData = new FormData(this);
      $.each(formAttachements, function (i, file) {
          formData.append('file-' + i, file);
          console.log('data' + formData);
      });
  
      $.ajax({
  
          url: 'UploadServlet',
          data: formData,
          type: 'POST',
          cache: false,
          contentType: false,
          processData: false,
          success: function () {
              console.log('Files Uploaded');
              console.log('versionForm submit ajax success');
          },
          error: function () {
  
              console.log('versionForm submit ajax error');
          }
      });
  });
  </code></pre>
  
  <p>My Servlet code is where I wrote the code for fileUpload using apache-commons file-upload library:</p>
  
  <pre><code>public class UploadServlet extends HttpServlet {
  
  String version = "";
  String countryCode = "";
  
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
      System.out.println("In Upload Servlet");
  
      boolean isMultipart = ServletFileUpload.isMultipartContent(request);
      System.out.println("Is form multipart:" + isMultipart);
  
      // check if form is multipart
      if (isMultipart) {
          // Create a factory for disk-based file items
          DiskFileItemFactory factory = new DiskFileItemFactory();
  
          // Configure a repository (to ensure a secure temp location is used)
          ServletContext context = this.getServletConfig().getServletContext();
          File repository = (File) context.getAttribute("javax.servlet.context.tempdir");
          factory.setRepository(repository);
  
          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);
  
  
          try {
  
              List&lt;FileItem&gt; items;
  
              // Parse the request
              items = upload.parseRequest(request);
  
              for(FileItem item : items) {
                  // Process a regular form field
                  if (item.isFormField()) {
                      System.out.println("Regular form field!");
                      processFormField(item);
  
                      // Process a file upload
                  } else {
                      System.out.println("File Upload Field!");
                       InputStream fileContent = item.getInputStream();
                      processUploadFile(fileContent,item);
                  }
              }
  
  
  
  
          } catch (FileUploadException ex) {
              Logger.getLogger(UploadServlet.class.getName()).log(Level.SEVERE, null, ex);
          }
  
      }
  }
  
  // for regular form field
  public void processFormField(FileItem item) {
      String fieldName = item.getFieldName();
      String value = item.getString();
  
      if (fieldName.equals("version")) {
          version = value;
      }
      if (fieldName.equals("countryCode")) {
          countryCode = value;
      }
      System.out.println("fieldName " + fieldName);
      System.out.println("value " + value);
  }
  
  // for upload file
  public void processUploadFile(InputStream fileContent,FileItem item) {
  
      // fields of uploaded file
      String fieldName = item.getFieldName();
      String fileName = item.getName();
      String contentType = item.getContentType();
      boolean isInMemory = item.isInMemory();
      long sizeInBytes = item.getSize();
      System.out.println("FieldName:" + fieldName + ",FileName:" + fileName + ",ContentType:" + contentType
              + ",IsInmemory:" + isInMemory + ",SizeInByte:" + sizeInBytes);
  
  
      String saveDirPath = "C:\\Users\\Gest1\\Desktop\\karan\\server\\" + countryCode + "\\" + version;
      File file = new File(saveDirPath);
      // if directory does not exists make directory
      if (!file.exists()) {
          file.mkdirs();
          System.out.println("Dir created!");
      }
  
      // Path for file
      String filePath = saveDirPath + File.separator + fileName;
  
      try {
  
          while (fileContent.available() &gt; 0) {
              System.out.println("Inside While Loop");
              // write the file
              File storeFile = new File(filePath);
              item.write(storeFile);
              fileContent.close();
  
          }
  
      } catch (EOFException ex) {
          Logger.getLogger(UploadServlet.class.getName()).log(Level.SEVERE, null, ex);
      } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  }
  </code></pre>
  
  <p><strong>Please help its getting complex</strong></p>