Sample code for 30+ languages & platforms
Perl

S3 Upload Binary File from BinData

See more Amazon S3 (new) Examples

Upload a binary file contained in a BinData object to Amazon S3.

Chilkat Perl Downloads

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

my $rest = Chilkat2::Rest->new;

# Connect to the Amazon AWS REST server.
my $bTls = 1;
my $port = 443;
my $bAutoReconnect = 1;
# Make sure to connect to the region where the bucket is located..
my $success = $rest->Connect('s3-us-west-2.amazonaws.com', $port, $bTls, $bAutoReconnect);

# Provide AWS credentials for the REST call.
my $authAws = Chilkat2::AuthAws->new;
$authAws->AccessKey('AWS_ACCESS_KEY');
$authAws->SecretKey('AWS_SECRET_KEY');
# Use the correct region..
$authAws->Region('us-west-2');
$authAws->ServiceName('s3');

$success = $rest->SetAuthAws($authAws);

# Set the bucket name via the HOST header.
# In this case, the bucket name is "chilkat.qa".
# (Also make sure to use the correct region.)
$rest->Host('chilkat.qa.s3-us-west-2.amazonaws.com');

# Load a text file into memory.
my $pngData = Chilkat2::BinData->new;
$success = $pngData->LoadFile('qa_data/png/anemone.png');
if (!$success) {
    print "Failed to load file from local filesystem.\n";
    exit;
}

# Indicate the Content-Type of our upload.  (This is optional)
$rest->AddHeader('Content-Type', 'image/png');

# Upload the file to Amazon S3.
my $sbResponse = Chilkat2::StringBuilder->new;
$success = $rest->FullRequestBd('PUT', '/images/sea_creatures/anemone.png', $pngData, $sbResponse);
if (!$success) {
    print $rest->LastErrorText, "\n";
    exit;
}

# Did we get a 200 response indicating success?
my $statusCode = $rest->ResponseStatusCode;
if ($statusCode != 200) {
    print 'Error response: ', $sbResponse->GetAsString(), "\n";
    print 'Status code: ', $statusCode, ', Status text: ', $rest->ResponseStatusText, "\n";
    exit;
}

print "File successfully uploaded.\n";