code: private void startMultipartUpload(WebContext ctx, Bucket bucket, String id) {
          Response response = ctx.respondWith();
  
          Map<String, String> properties = Maps.newTreeMap();
          for (String name : ctx.getRequest().headers().names()) {
              String nameLower = name.toLowerCase();
              if (nameLower.startsWith("x-amz-meta-") || "content-md5".equals(nameLower) || "content-type".equals(
                      nameLower) || "x-amz-acl".equals(nameLower)) {
                  properties.put(name, ctx.getHeader(name));
                  response.addHeader(name, ctx.getHeader(name));
              }
          }
          response.setHeader(HTTP_HEADER_NAME_CONTENT_TYPE, CONTENT_TYPE_XML);
  
          String uploadId = String.valueOf(uploadIdCounter.inc());
          multipartUploads.add(uploadId);
  
          getUploadDir(uploadId).mkdirs();
  
          XMLStructuredOutput out = response.xml();
          out.beginOutput("InitiateMultipartUploadResult");
          out.property(RESPONSE_BUCKET, bucket.getName());
          out.property("Key", id);
          out.property("UploadId", uploadId);
          out.endOutput();
      }
docs: Handles POST /bucket/id?uploads
  
  @param ctx    the context describing the current request
  @param bucket the bucket containing the object to upload
  @param id     name of the object to upload