code: private String initiateMultipartUpload(PutObjectRequest origReq, boolean isUsingEncryption) {
  
          InitiateMultipartUploadRequest req = null;
          if (isUsingEncryption && origReq instanceof EncryptedPutObjectRequest) {
              req = new EncryptedInitiateMultipartUploadRequest(
                      origReq.getBucketName(), origReq.getKey()).withCannedACL(
                      origReq.getCannedAcl()).withObjectMetadata(origReq.getMetadata());
              ((EncryptedInitiateMultipartUploadRequest) req)
                      .setMaterialsDescription(((EncryptedPutObjectRequest) origReq).getMaterialsDescription());
          } else {
              req = new InitiateMultipartUploadRequest(origReq.getBucketName(), origReq.getKey())
                  .withCannedACL(origReq.getCannedAcl())
                  .withObjectMetadata(origReq.getMetadata());
          }
  
          TransferManager.appendMultipartUserAgent(req);
  
          req.withAccessControlList(origReq.getAccessControlList())
             .withRequesterPays(origReq.isRequesterPays())
             .withStorageClass(origReq.getStorageClass())
             .withRedirectLocation(origReq.getRedirectLocation())
             .withSSECustomerKey(origReq.getSSECustomerKey())
             .withSSEAwsKeyManagementParams(origReq.getSSEAwsKeyManagementParams())
             .withGeneralProgressListener(origReq.getGeneralProgressListener())
             .withRequestMetricCollector(origReq.getRequestMetricCollector())
             ;
  
          String uploadId = s3.initiateMultipartUpload(req).getUploadId();
          log.debug("Initiated new multipart upload: " + uploadId);
  
          return uploadId;
      }
docs: Initiates a multipart upload and returns the upload id
  @param isUsingEncryption