public String getExpectedBucketOwner() {
        return expectedBucketOwner;
    }
Constructs a new
{@link PutObjectRequest} object to upload a stream of data to
the specified bucket and key. After constructing the request,
users may optionally specify object metadata or a canned ACL as well.
<p>
Content length for the data stream <b>must</b> be
specified in the object metadata parameter; Amazon S3 requires it
be passed in before the data is uploaded. Failure to specify a content
length will cause the entire contents of the input stream to be buffered
locally in memory so that the content length can be calculated, which can
result in negative performance problems.
</p>

<p>
When using this API with an access point, you must direct requests
to the access point hostname. The access point hostname takes the form
<i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
</p>
<p>
When using this operation using an access point through the Amazon Web Services SDKs, you provide
the access point ARN in place of the bucket name. For more information about access point
ARNs, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html\">
Using access points</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.
</p>

@param bucketName
           The name of an existing bucket, or access point ARN, to which the new object will be
           uploaded.
@param key
           The key under which to store the new object.
@param input
           The stream of data to upload to Amazon S3.
@param metadata
           The object metadata. At minimum this specifies the
           content length for the stream of data being uploaded.
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/model/PutObjectRequest.java