com.amazonaws.services.s3.model
Class PutObjectRequest

java.lang.Object
  extended by com.amazonaws.AmazonWebServiceRequest
      extended by com.amazonaws.services.s3.model.PutObjectRequest

public class PutObjectRequest
extends AmazonWebServiceRequest

Uploads a new object to the specified Amazon S3 bucket. The PutObjectRequest optionally uploads object metadata and applies a canned access control policy to the new object.

Amazon S3 never stores partial objects; if during this call an exception wasn't thrown, the entire object was stored.

Depending on whether a file or input stream is being uploaded, this request has slightly different behavior.

When uploading a file:

When uploading directly from an input stream, content length must be specified before data can be uploaded to Amazon S3. If not provided, the library will have to buffer the contents of the input stream in order to calculate it. Amazon S3 explicitly requires that the content length be sent in the request headers before any of the data is sent.

Amazon S3 is a distributed system. If Amazon S3 receives multiple write requests for the same object nearly simultaneously, all of the objects might be stored. However, only one object will obtain the key.

Note: Amazon S3 does not provide object locking; if this is needed, make sure to build it into the application layer.

If the caller specifies a location constraint when creating a bucket, all objects added to the bucket are stored in the same region as the bucket. For example, if specifying a Europe (EU) region constraint for a bucket, all of that bucket's objects are stored in the EU region.

The specified bucket must already exist and the caller must have Permission.Write permission to the bucket to upload an object.

See Also:
PutObjectRequest(String, String, File), PutObjectRequest(String, String, InputStream, ObjectMetadata)

Constructor Summary
PutObjectRequest(String bucketName, String key, File file)
          Constructs a new PutObjectRequest object to upload a file to the specified bucket and key.
PutObjectRequest(String bucketName, String key, InputStream input, ObjectMetadata metadata)
          Constructs a new PutObjectRequest object to upload a stream of data to the specified bucket and key.
 
Method Summary
 AccessControlList getAccessControlList()
          Returns the optional access control list for the new object.
 String getBucketName()
          Gets the name of the existing bucket where this request will upload a new object to.
 CannedAccessControlList getCannedAcl()
          Gets the optional pre-configured access control policy to use for the new object.
 File getFile()
          Gets the path and name of the file containing the data to be uploaded to Amazon S3.
 InputStream getInputStream()
          Gets the input stream containing the data to be uploaded to Amazon S3.
 String getKey()
          Gets the key under which to store the new object.
 ObjectMetadata getMetadata()
          Gets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g.
 ProgressListener getProgressListener()
          Returns the optional progress listener for receiving updates about object upload status.
 String getStorageClass()
          Gets the optional Amazon S3 storage class to use when storing the new object.
 void setAccessControlList(AccessControlList accessControlList)
          Sets the optional access control list for the new object.
 void setBucketName(String bucketName)
          Sets the name of an existing bucket where this request will upload a new object to.
 void setCannedAcl(CannedAccessControlList cannedAcl)
          Sets the optional pre-configured access control policy to use for the new object.
 void setFile(File file)
          Sets the path and name of the file containing the data to be uploaded to Amazon S3.
 void setInputStream(InputStream inputStream)
          Sets the input stream containing the data to be uploaded to Amazon S3.
 void setKey(String key)
          Sets the key under which to store the new object.
 void setMetadata(ObjectMetadata metadata)
          Sets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g.
 void setProgressListener(ProgressListener progressListener)
          Sets the optional progress listener for receiving updates about object upload status.
 void setStorageClass(StorageClass storageClass)
          Sets the optional Amazon S3 storage class to use when storing the new object.
 void setStorageClass(String storageClass)
          Sets the optional Amazon S3 storage class to use when storing the new object.
 PutObjectRequest withAccessControlList(AccessControlList accessControlList)
          Sets the optional access control list for the new object.
 PutObjectRequest withBucketName(String bucketName)
          Sets the name of the bucket where this request will upload a new object to.
 PutObjectRequest withCannedAcl(CannedAccessControlList cannedAcl)
          Sets the optional pre-configured access control policy to use for the new object.
 PutObjectRequest withFile(File file)
          Sets the file containing the data to be uploaded to Amazon S3.
 PutObjectRequest withInputStream(InputStream inputStream)
          Sets the input stream containing the data to be uploaded to Amazon S3.
 PutObjectRequest withKey(String key)
          Sets the key under which to store the new object.
 PutObjectRequest withMetadata(ObjectMetadata metadata)
          Sets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g.
 PutObjectRequest withProgressListener(ProgressListener progressListener)
          Sets the optional progress listener for receiving updates about object upload status, and returns this updated object so that additional method calls can be chained together.
 PutObjectRequest withStorageClass(StorageClass storageClass)
          Sets the optional Amazon S3 storage class to use when storing the new object.
 PutObjectRequest withStorageClass(String storageClass)
          Sets the optional Amazon S3 storage class to use when storing the new object.
 
Methods inherited from class com.amazonaws.AmazonWebServiceRequest
copyPrivateRequestParameters, getDelegationToken, getRequestClientOptions, getRequestCredentials, setDelegationToken, setRequestCredentials
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PutObjectRequest

public PutObjectRequest(String bucketName,
                        String key,
                        File file)
Constructs a new PutObjectRequest object to upload a file to the specified bucket and key. After constructing the request, users may optionally specify object metadata or a canned ACL as well.

Parameters:
bucketName - The name of an existing bucket to which the new object will be uploaded.
key - The key under which to store the new object.
file - The path of the file to upload to Amazon S3.
See Also:
PutObjectRequest(String, String, InputStream, ObjectMetadata)

PutObjectRequest

public PutObjectRequest(String bucketName,
                        String key,
                        InputStream input,
                        ObjectMetadata metadata)
Constructs a new 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.

Content length for the data stream must 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.

Parameters:
bucketName - The name of an existing bucket to which the new object will be uploaded.
key - The key under which to store the new object.
input - The stream of data to upload to Amazon S3.
metadata - The object metadata. At minimum this specifies the content length for the stream of data being uploaded.
See Also:
PutObjectRequest(String, String, File)
Method Detail

getBucketName

public String getBucketName()
Gets the name of the existing bucket where this request will upload a new object to. In order to upload the object, users must have Permission.Write permission granted.

Returns:
The name of an existing bucket where this request will upload a new object to.
See Also:
setBucketName(String), withBucketName(String)

setBucketName

public void setBucketName(String bucketName)
Sets the name of an existing bucket where this request will upload a new object to. In order to upload the object, users must have Permission.Write permission granted.

Parameters:
bucketName - The name of an existing bucket where this request will upload a new object to. In order to upload the object, users must have Permission.Write permission granted.
See Also:
getBucketName(), withBucketName(String)

withBucketName

public PutObjectRequest withBucketName(String bucketName)
Sets the name of the bucket where this request will upload a new object to. Returns this object, enabling additional method calls to be chained together.

In order to upload the object, users must have Permission.Write permission granted.

Parameters:
bucketName - The name of an existing bucket where this request will upload a new object to. In order to upload the object, users must have Permission.Write permission granted.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getBucketName(), setBucketName(String)

getKey

public String getKey()
Gets the key under which to store the new object.

Returns:
The key under which to store the new object.
See Also:
setKey(String), withKey(String)

setKey

public void setKey(String key)
Sets the key under which to store the new object.

Parameters:
key - The key under which to store the new object.
See Also:
getKey(), withKey(String)

withKey

public PutObjectRequest withKey(String key)
Sets the key under which to store the new object. Returns this object, enabling additional method calls to be chained together.

Parameters:
key - The key under which to store the new object.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getKey(), setKey(String)

getStorageClass

public String getStorageClass()
Gets the optional Amazon S3 storage class to use when storing the new object. If not specified, the default standard storage class is used when storing the object.

For more information on available Amazon S3 storage classes, see the StorageClass enumeration.

Returns:
The Amazon S3 storage class to use when storing the newly copied object.
See Also:
setStorageClass(String), setStorageClass(StorageClass), withStorageClass(StorageClass), withStorageClass(String)

setStorageClass

public void setStorageClass(String storageClass)
Sets the optional Amazon S3 storage class to use when storing the new object. If not specified, the default standard storage class will be used when storing the new object.

For more information on Amazon S3 storage classes and available values, see the StorageClass enumeration.

Parameters:
storageClass - The storage class to use when storing the new object.
See Also:
getStorageClass(), PutObjectRequest#setStorageClass(StorageClass, withStorageClass(StorageClass), withStorageClass(String)

withStorageClass

public PutObjectRequest withStorageClass(String storageClass)
Sets the optional Amazon S3 storage class to use when storing the new object. Returns this PutObjectRequest, enabling additional method calls to be chained together. If not specified, the default standard storage class will be used when storing the object.

For more information on Amazon S3 storage classes and available values, see the StorageClass enumeration.

Parameters:
storageClass - The storage class to use when storing the new object.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getStorageClass(), setStorageClass(StorageClass), setStorageClass(String), withStorageClass(StorageClass)

setStorageClass

public void setStorageClass(StorageClass storageClass)
Sets the optional Amazon S3 storage class to use when storing the new object. If not specified, the default standard storage class will be used when storing the object.

For more information on Amazon S3 storage classes and available values, see the StorageClass enumeration.

Parameters:
storageClass - The storage class to use when storing the new object.
See Also:
getStorageClass(), setStorageClass(String)

withStorageClass

public PutObjectRequest withStorageClass(StorageClass storageClass)
Sets the optional Amazon S3 storage class to use when storing the new object. Returns this PutObjectRequest, enabling additional method calls to be chained together. If not specified, the default standard storage class will be used when storing the object.

For more information on Amazon S3 storage classes and available values, see the StorageClass enumeration.

Parameters:
storageClass - The storage class to use when storing the new object.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getStorageClass(), setStorageClass(StorageClass), setStorageClass(String), withStorageClass(String)

getFile

public File getFile()
Gets the path and name of the file containing the data to be uploaded to Amazon S3. Either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Returns:
The path and name of the file containing the data to be uploaded to Amazon S3.
See Also:
setFile(File), withFile(File), setInputStream(InputStream), withInputStream(InputStream)

setFile

public void setFile(File file)
Sets the path and name of the file containing the data to be uploaded to Amazon S3. Either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Parameters:
file - The path and name of the file containing the data to be uploaded to Amazon S3.
See Also:
getFile(), withFile(File), getInputStream(), withInputStream(InputStream)

withFile

public PutObjectRequest withFile(File file)
Sets the file containing the data to be uploaded to Amazon S3. Returns this PutObjectRequest, enabling additional method calls to be chained together.

Either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Parameters:
file - The file containing the data to be uploaded to Amazon S3.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getFile(), setFile(File), getInputStream(), setInputStream(InputStream)

getMetadata

public ObjectMetadata getMetadata()
Gets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.).

If uploading from an input stream, always specify metadata with the content size set. Otherwise the contents of the input stream have to be buffered in memory before being sent to Amazon S3. This can cause very negative performance impacts.

Returns:
The optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.).
See Also:
setMetadata(ObjectMetadata), withMetadata(ObjectMetadata)

setMetadata

public void setMetadata(ObjectMetadata metadata)
Sets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.).

If uploading from an input stream, always specify metadata with the content size set. Otherwise the contents of the input stream have to be buffered in memory before being sent to Amazon S3. This can cause very negative performance impacts.

Parameters:
metadata - The optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.).
See Also:
getMetadata(), withMetadata(ObjectMetadata)

withMetadata

public PutObjectRequest withMetadata(ObjectMetadata metadata)
Sets the optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.). Returns this PutObjectRequest, enabling additional method calls to be chained together.

If uploading from an input stream, always specify metadata with the content size set. Otherwise the contents of the input stream have to be buffered in memory before being sent to Amazon S3. This can cause very negative performance impacts.

Parameters:
metadata - The optional metadata instructing Amazon S3 how to handle the uploaded data (e.g. custom user metadata, hooks for specifying content type, etc.).
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getMetadata(), setMetadata(ObjectMetadata)

getCannedAcl

public CannedAccessControlList getCannedAcl()
Gets the optional pre-configured access control policy to use for the new object.

Returns:
The optional pre-configured access control policy to use for the new object.
See Also:
setCannedAcl(CannedAccessControlList), withCannedAcl(CannedAccessControlList)

setCannedAcl

public void setCannedAcl(CannedAccessControlList cannedAcl)
Sets the optional pre-configured access control policy to use for the new object.

Parameters:
cannedAcl - The optional pre-configured access control policy to use for the new object.
See Also:
getCannedAcl(), withCannedAcl(CannedAccessControlList)

withCannedAcl

public PutObjectRequest withCannedAcl(CannedAccessControlList cannedAcl)
Sets the optional pre-configured access control policy to use for the new object. Returns this PutObjectRequest, enabling additional method calls to be chained together.

Parameters:
cannedAcl - The optional pre-configured access control policy to use for the new object.
Returns:
This PutObjectRequest, enabling additional method calls to be chained together.
See Also:
getCannedAcl(), setCannedAcl(CannedAccessControlList)

getAccessControlList

public AccessControlList getAccessControlList()
Returns the optional access control list for the new object. If specified, cannedAcl will be ignored.


setAccessControlList

public void setAccessControlList(AccessControlList accessControlList)
Sets the optional access control list for the new object. If specified, cannedAcl will be ignored.

Parameters:
accessControlList - The access control list for the new object.

withAccessControlList

public PutObjectRequest withAccessControlList(AccessControlList accessControlList)
Sets the optional access control list for the new object. If specified, cannedAcl will be ignored. Returns this PutObjectRequest, enabling additional method calls to be chained together.

Parameters:
accessControlList - The access control list for the new object.

getInputStream

public InputStream getInputStream()
Gets the input stream containing the data to be uploaded to Amazon S3. The user of this request must either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Returns:
The input stream containing the data to be uploaded to Amazon S3. Either specify a file or an input stream containing the data to be uploaded to Amazon S3, not both.
See Also:
setInputStream(InputStream), withInputStream(InputStream), setFile(File), withFile(File)

setInputStream

public void setInputStream(InputStream inputStream)
Sets the input stream containing the data to be uploaded to Amazon S3. Either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Parameters:
inputStream - The input stream containing the data to be uploaded to Amazon S3. Either specify a file or an input stream containing the data to be uploaded to Amazon S3, not both.
See Also:
getInputStream(), withInputStream(InputStream), getFile(), withFile(File)

withInputStream

public PutObjectRequest withInputStream(InputStream inputStream)
Sets the input stream containing the data to be uploaded to Amazon S3. Returns this PutObjectRequest, enabling additional method calls to be chained together.

Either specify a file or an input stream containing the data to be uploaded to Amazon S3; both cannot be specified.

Parameters:
inputStream - The InputStream containing the data to be uploaded to Amazon S3.
Returns:
This PutObjectRequest, so that additional method calls can be chained together.
See Also:
getInputStream(), setInputStream(InputStream), getFile(), setFile(File)

setProgressListener

public void setProgressListener(ProgressListener progressListener)
Sets the optional progress listener for receiving updates about object upload status.

Parameters:
progressListener - The new progress listener.

getProgressListener

public ProgressListener getProgressListener()
Returns the optional progress listener for receiving updates about object upload status.

Returns:
the optional progress listener for receiving updates about object upload status.

withProgressListener

public PutObjectRequest withProgressListener(ProgressListener progressListener)
Sets the optional progress listener for receiving updates about object upload status, and returns this updated object so that additional method calls can be chained together.

Parameters:
progressListener - The new progress listener.
Returns:
This updated PutObjectRequest object.


Copyright © 2010 Amazon Web Services, Inc. All Rights Reserved.