code: public Optional<List<FormItem>> parseRequestMultiPartItems(String encoding) {
          DiskFileItemFactory factory = new DiskFileItemFactory();
          factory.setSizeThreshold(properties.getInt(Constants.PROPERTY_UPLOADS_MAX_SIZE/*Constants.Params.maxUploadSize.name()*/));//Configuration.getMaxUploadSize());
          factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); //Configuration.getTmpDir());
          //README the file for tmpdir *MIGHT* need to go into Properties
          
          ServletFileUpload upload = new ServletFileUpload(factory);
          
          if(encoding != null)
              upload.setHeaderEncoding(encoding);
          upload.setFileSizeMax(properties.getInt(Constants.PROPERTY_UPLOADS_MAX_SIZE));
          
          try {
              List<FormItem> items = upload.parseRequest(request)
                      .stream()
                      .map(item -> new ApacheFileItemFormItem(item))
                      .collect(Collectors.toList());
              return Optional.of(items);
          } catch (FileUploadException e) {
              //"Error while trying to process mulitpart file upload"
              //README: perhaps some logging
          }
          return Optional.empty();
      }
docs: Gets the FileItemIterator of the input.
  
  Can be used to process uploads in a streaming fashion. Check out:
  http://commons.apache.org/fileupload/streaming.html
  
  @return the FileItemIterator of the request or null if there was an
  error.