NAME

AWS::S3::File - A single file in Amazon S3

SYNOPSIS

my $file = $bucket->file('foo/bar.txt');

# contents is a scalarref:
print @{ $file->contents };
print $file->size;
print $file->key;
print $file->etag;
print $file->lastmodified;

print $file->owner->display_name;

print $file->bucket->name;

# Set the contents with a scalarref:
my $new_contents = "This is the new contents of the file.";
$file->contents( \$new_contents );

# Set the contents with a coderef:
$file->contents( sub {
  return \$new_contents;
});

# Alternative update
$file->update( 
  contents => \'New contents', # optional
  contenttype => 'text/plain'  # optional
);

# Get signed URL for the file for public access
print $file->signed_url( $expiry_time );

# Delete the file:
$file->delete();

DESCRIPTION

AWS::S3::File provides a convenience wrapper for dealing with files stored in S3.

PUBLIC PROPERTIES

bucket

AWS::S3::Bucket - read-only.

The AWS::S3::Bucket that contains the file.

key

String - read-only.

The 'filename' (for all intents and purposes) of the file.

size

Integer - read-only.

The size in bytes of the file.

etag

String - read-only.

The Amazon S3 'ETag' header for the file.

owner

ASW::S3::Owner - read-only.

The ASW::S3::Owner that the file belongs to.

storage_class

String - read-only.

The type of storage used by the file.

lastmodified

String - read-only.

A date in this format:

2009-10-28T22:32:00

contents

ScalarRef|CodeRef - read-write.

Returns a scalar-reference of the file's contents.

Accepts either a scalar-ref or a code-ref (which would return a scalar-ref).

Once given a new value, the file is instantly updated on Amazon S3.

# GOOD: (uses scalarrefs)
my $value = "A string";
$file->contents( \$value );
$file->contents( sub { return \$value } );

# BAD: (not scalarrefs)
$file->contents( $value );
$file->contents( sub { return $value } );

PUBLIC METHODS

delete()

Deletes the file from Amazon S3.

update()

Update contents and/or contenttype of the file.

signed_url( $expiry_time )

Will return a signed URL for public access to the file. $expiry_time should be a Unix seconds since epoch, and will default to now + 1 hour is not passed.

Note that the Signature parameter value will be URI encoded to prevent reserved characters (+, =, etc) causing a bad request.

SEE ALSO

The Amazon S3 API Documentation

AWS::S3

AWS::S3::Bucket

AWS::S3::FileIterator

AWS::S3::Owner