Programming Examples

ChilkatHOMEASPVisual BasicVB.NETC#CC++MFCDelphiFoxProJavaPerlPythonRubySQL ServerVBScript

PHP Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
MIME
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip


 

 

 

 

 

 

 

 

Amazon S3 - Add Image (GIF) to Bucket

Demonstrates how to upload an image file (binary data) to an Amazon S3 bucket.

Download Chilkat FileAccess ActiveX (freeware)

Download Chilkat Crypt ActiveX

Download Chilkat HTTP ActiveX

<?php

$http = new COM("Chilkat.Http");
$success = $http->UnlockComponent('Anything for 30-day trial.');
if ($success != true) {
    //  Unlock failed.
    print $http->lastErrorText() . "\n";
    exit;
}

//  We'll need this for HMAC and MD5...
$crypt = new COM("Chilkat.Crypt2");

$success = $crypt->UnlockComponent('Anything for 30-day trial.');
if ($success != true) {
    print $crypt->lastErrorText() . "\n";
    exit;
}

//  The HTTP component now includes a method to generate
//  the current date/time in RFC 2616 compliant format.
//  Note: The GenTimeStamp method is available as a pre-release (as of 18-June-2008).
//  It will become available in the next new version dated after
//  18-June-2008.
$curDateTime = $http->genTimeStamp();

$fac = new COM('Chilkat.FileAccess');
$gifData = $fac->ReadEntireFile('dude.gif');

//  This is the name of the object to be added:
$objName = 'NeoGif';

//  Calculate the MD5 hash of the object's content:
$crypt->HashAlgorithm = 'md5';
$crypt->EncodingMode = 'base64';
$crypt->Charset = 'windows-1252';
$md5Hash = $crypt->hashBytesENC($gifData);

//  Create the string to be signed.
//  IMPORTANT:
//  If a Content-MD5 header is added (see below), then
//  you also need to include the MD5 hash of the content
//  here.
//  The content-type (image/gif) must match the content-type
//  passed to the PutBinary method (below).
$strToSign = 'PUT' . "\n" . $md5Hash . "\n" . 'image/gif' . "\n" . $curDateTime . "\n" . '/chilkat/' . $objName;

//  We want SHA1 for the HMAC hash algorithm:
$crypt->HashAlgorithm = 'sha1';

//  These must be changed for your account:
$AWSAccessKeyId = 'zzzzzzzzzzzzzzzzzzzzzz';
$AWSSecretAccessKey = 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';

//  Set the HMAC secret key:
$crypt->SetHmacKeyString($AWSSecretAccessKey);

//  By setting the charset = "utf-8", the string will be converted
//  to utf-8 (internal to the Chilkat component) prior to signing:
$crypt->Charset = 'utf-8';

//  Indicate that Base64 output is desired:
$crypt->EncodingMode = 'base64';

$signature = $crypt->hmacStringENC($strToSign);

$authValue = 'AWS ' . $AWSAccessKeyId . ':' . $signature;

//  The bucket to be used is specified in the Host header.
//  In this example, the object is added to the "chilkat" bucket:
$http->SetRequestHeader('Host','chilkat.s3.amazonaws.com');

$http->SetRequestHeader('Authorization',$authValue);
$http->SetRequestHeader('Date',$curDateTime);

//  Do not GZIP the request body.  To send a gzip compressed
//  object, simply set this to 1
$bGzip = false;
//  Automatically add an MD5 hash of the request body in the HTTP header
//  (using the Content-MD5 header field).
$bMd5 = true;

$url = 'http://s3.amazonaws.com/' . $objName;

$strResponse = $http->putBinary($url,$gifData,'image/gif',$bMd5,$bGzip);
if ($http->LastStatus == 200) {

    //  Success is indicated by a response status of 200.
    print 'Object added to bucket!' . "\n";

    //  Let's check out the response header anyway...
    print $http->lastResponseHeader() . "\n";

}
else {

    //  Failed.  Show the last request header, response header,
    //  and response body.
    print $http->lastHeader() . "\n";
    print '---' . "\n";
    print $http->lastResponseHeader() . "\n";
    print '---' . "\n";
    print $http->lastErrorText() . "\n";

}

?>

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2008 Chilkat Software, Inc. All Rights Reserved.