Chilkat HOME ASP Visual Basic VB.NET C# C C++ MFC Delphi FoxPro Java Perl Python Ruby SQL Server VBScript
Amazon S3 - Add Image (GIF) to BucketDemonstrates how to upload an image file (binary data) to an Amazon S3 bucket.
<?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.