code: private void multiObject(WebContext ctx, String uploadId, String partNumber, InputStreamHandler part) {
          if (!multipartUploads.contains(uploadId)) {
              ctx.respondWith().error(HttpResponseStatus.NOT_FOUND, ERROR_MULTIPART_UPLOAD_DOES_NOT_EXIST);
              return;
          }
  
          String etag = "";
  
          try {
              File partFile = new File(getUploadDir(uploadId), partNumber);
              partFile.deleteOnExit();
              Files.touch(partFile);
  
              try (FileOutputStream out = new FileOutputStream(partFile)) {
                  ByteStreams.copy(part, out);
              }
              part.close();
  
              etag = Files.hash(partFile, Hashing.md5()).toString();
          } catch (IOException e) {
              Exceptions.handle(e);
          }
  
          Response response = ctx.respondWith();
          response.setHeader(HTTP_HEADER_NAME_ETAG, etag);
          response.addHeader(HttpHeaderNames.ACCESS_CONTROL_EXPOSE_HEADERS, HTTP_HEADER_NAME_ETAG);
          response.status(HttpResponseStatus.OK);
      }
docs: Handles PUT /bucket/id?uploadId=X&partNumber=Y
  
  @param ctx        the context describing the current request
  @param uploadId   the multipart upload this part belongs to
  @param partNumber the number of this part in the complete upload
  @param part       input stream with the content of this part