Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA

Unreleased...
Bzip2
LZW
Bz2
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

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

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATFILEACCESSLib_TLB,
    CHILKATHTTPLib_TLB,
    CHILKATCRYPT2Lib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
http: TChilkatHttp;
success: Integer;
crypt: TChilkatCrypt2;
curDateTime: String;
gifData: Array of Byte;
fac: TCkFileAccess;
objName: String;
md5Hash: String;
strToSign: String;
AWSAccessKeyId: String;
AWSSecretAccessKey: String;
signature: String;
authValue: String;
bGzip: Integer;
bMd5: Integer;
url: String;
strResponse: String;

begin
http := TChilkatHttp.Create(Self);
success := http.UnlockComponent('Anything for 30-day trial.');
if (success <> 1) then
  begin
    //  Unlock failed.
    ShowMessage(http.LastErrorText);
    Exit;
  end;

//  We'll need this for HMAC and MD5...
crypt := TChilkatCrypt2.Create(Self);

success := crypt.UnlockComponent('Anything for 30-day trial.');
if (success <> 1) then
  begin
    ShowMessage(crypt.LastErrorText);
    Exit;
  end;

//  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 := TCkFileAccess.Create(Self);
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' + #10 + md5Hash + #10 + 'image/gif' + #10 + curDateTime + #10 + '/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 := 0;
//  Automatically add an MD5 hash of the request body in the HTTP header
//  (using the Content-MD5 header field).
bMd5 := 1;

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

strResponse := http.PutBinary(url,gifData,'image/gif',bMd5,bGzip);
if (http.LastStatus = 200) then
  begin

    //  Success is indicated by a response status of 200.
    ShowMessage('Object added to bucket!');

    //  Let's check out the response header anyway...
    Memo1.Lines.Add(http.LastResponseHeader);

  end
else
  begin

    //  Failed.  Show the last request header, response header,
    //  and response body.
    Memo1.Lines.Add(http.LastHeader);
    Memo1.Lines.Add('---');
    Memo1.Lines.Add(http.LastResponseHeader);
    Memo1.Lines.Add('---');
    Memo1.Lines.Add(http.LastErrorText);

  end;
end;

 

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

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

Mail Component · .NET Email Component · XML Parser