Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

S3 List Objects in Bucket

See more Amazon S3 Examples

Demonstrates how to retrieve the XML listing of the objects (i.e. files) stored in an Amazon S3 bucket. (This is like a directory listing.)

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.DtObj,
  Chilkat.Xml,
  Chilkat.CkDateTime;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  strXml: string;
  xml: TXml;
  numItems: Integer;
  itemKey: string;
  itemSize: Integer;
  lastModTimestamp: string;
  dt: TCkDateTime;
  dtObj: TDtObj;
  i: Integer;
  bLocal: Boolean;

begin
  success := False;

  //  This example assumes the Chilkat HTTP API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  Insert your access key here:
  http.AwsAccessKey := 'AWS_ACCESS_KEY';

  //  Insert your secret key here:
  http.AwsSecretKey := 'AWS_SECRET_KEY';

  strXml := http.S3_ListBucketObjects('chilkat100');
  if (http.LastMethodSuccess = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('Response status code = ' + http.LastStatus);

  xml := TXml.Create;
  success := xml.LoadXml(strXml);
  if (success = False) then
    begin
      WriteLn(xml.LastErrorText);
      Exit;
    end;

  //  If the response status code was not 200, then the XML response is not a 
  //  listing of objects, but instead contains error information.
  if (http.LastStatus <> 200) then
    begin
      WriteLn(xml.GetXml());
      WriteLn('Failed.');
      Exit;
    end;

  //  A sample response is shown below.
  WriteLn(xml.GetXml());
  WriteLn('----');

  //  Iterate over the bucket items and get information for each..
  numItems := xml.NumChildrenHavingTag('Contents');
  WriteLn('Number of bucket items = ' + numItems);

  dt := TCkDateTime.Create;
  dtObj := TDtObj.Create;

  i := 0;
  while i < numItems do
    begin
      xml.I := i;

      itemKey := xml.GetChildContent('Contents[i]|Key');
      itemSize := xml.GetChildIntValue('Contents[i]|Size');
      lastModTimestamp := xml.GetChildContent('Contents[i]|LastModified');

      dt.SetFromRfc822(lastModTimestamp);
      //  Get a local date/time.
      bLocal := True;
      dt.ToDtObj(bLocal,dtObj);

      WriteLn(i + ': ' + itemKey + ', ' + itemSize + ', ' + dtObj.Day + '-' + dtObj.Month + '-' + dtObj.Year + ':' + dtObj.Hour + ':' + dtObj.Minute);

      i := i + 1;
    end;

  //  Sample output from the above loop:

  //  0: Abc.ics, 1833, 25-5-2011:9:53
  //  1: Corpse Bride film poster.jpg, 53481, 6-9-2016:13:32
  //  2: chiliPepper.gif, 7718, 12-3-2017:12:18
  //  3: chilkatdude.jpg, 35137, 20-5-2011:16:14
  //  4: cloud.search/dfe/indexer/pscc/2016/3/28/id,x-2-15-0-25-87-0.json, 1238, 2-4-2016:12:0
  //  5: cloud.search/dfe/indexer/pscc/2016/3/28/idx-2-15-0-25-87-0.json, 1238, 2-4-2016:11:33
  //  6: dude.gif, 6373, 25-5-2011:17:29
  //  7: french.txt, 47, 12-3-2017:12:18
  //  8: hamlet.xml, 279658, 2-5-2016:12:21
  //  9: hamlet_play.xml, 279658, 20-3-2017:8:22
  //  10: images/sea_creatures/starfish123.jpg, 6229, 19-1-2017:10:45
  //  11: images/sea_creatures/starfishåäö.jpg, 6229, 19-1-2017:12:7
  //  12: new folder/, 0, 26-11-2014:12:36
  //  13: new_starfish.jpg, 6229, 20-3-2017:8:22
  //  14: pigs.xml, 2804, 20-3-2017:8:22
  //  15: somethingBig.zip, 13089458, 26-9-2016:9:29
  //  16: starfish.jpg, 6229, 12-3-2017:12:18
  //  17: starfish/, 0, 10-11-2014:10:7
  //  18: starfish/starfish.jpg, 6229, 10-11-2014:10:8
  //  19: starfish/starfish2.jpg, 6229, 19-11-2014:10:36
  //  20: starfish/starfish3.jpg, 6229, 24-11-2014:14:33
  //  21: starfish2.jpg, 5987, 20-4-2012:12:6
  //  22: starfish3.jpg, 5987, 11-4-2012:7:10
  //  23: starfishA.jpg, 6229, 10-5-2016:8:44
  //  24: starfishCust.jpg, 6229, 12-11-2014:18:25
  //  25: xyz.ics, 1833, 25-5-2011:8:52

  //  <?xml version="1.0" encoding="UTF-8" ?>
  //  <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  //      <Name>chilkat100</Name>
  //      <Prefix />
  //      <Marker />
  //      <MaxKeys>1000</MaxKeys>
  //      <IsTruncated>false</IsTruncated>
  //      <Contents>
  //          <Key>Abc.ics</Key>
  //          <LastModified>2011-05-25T14:53:27.000Z</LastModified>
  //          <ETag>"12ed2e28ff4abd4faead06b491836e64"</ETag>
  //          <Size>1833</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>Corpse Bride film poster.jpg</Key>
  //          <LastModified>2016-09-06T18:32:05.000Z</LastModified>
  //          <ETag>"5a63ba56f0641244e4988dd171b8c5ae"</ETag>
  //          <Size>53481</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>chiliPepper.gif</Key>
  //          <LastModified>2017-03-12T17:18:16.000Z</LastModified>
  //          <ETag>"8ee9b257fa70f69400d596977809da94"</ETag>
  //          <Size>7718</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>chilkatdude.jpg</Key>
  //          <LastModified>2011-05-20T21:14:44.000Z</LastModified>
  //          <ETag>"6f7555035d080421e09e932daf19c79d"</ETag>
  //          <Size>35137</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>cloud.search/dfe/indexer/pscc/2016/3/28/id,x-2-15-0-25-87-0.json</Key>
  //          <LastModified>2016-04-02T17:00:10.000Z</LastModified>
  //          <ETag>"518d70f41c9df4f85762ecde8a34cdea"</ETag>
  //          <Size>1238</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>cloud.search/dfe/indexer/pscc/2016/3/28/idx-2-15-0-25-87-0.json</Key>
  //          <LastModified>2016-04-02T16:33:36.000Z</LastModified>
  //          <ETag>"518d70f41c9df4f85762ecde8a34cdea"</ETag>
  //          <Size>1238</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>dude.gif</Key>
  //          <LastModified>2011-05-25T22:29:31.000Z</LastModified>
  //          <ETag>"208b908388905d442e81ded00a55541b"</ETag>
  //          <Size>6373</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>french.txt</Key>
  //          <LastModified>2017-03-12T17:18:16.000Z</LastModified>
  //          <ETag>"54468302e7cda1c1dfe45748d430035a"</ETag>
  //          <Size>47</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>hamlet.xml</Key>
  //          <LastModified>2016-05-02T17:21:27.000Z</LastModified>
  //          <ETag>"e04ea9ac8f616b0f35c5a7522de123dd"</ETag>
  //          <Size>279658</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>hamlet_play.xml</Key>
  //          <LastModified>2017-03-20T13:22:40.000Z</LastModified>
  //          <ETag>"e04ea9ac8f616b0f35c5a7522de123dd"</ETag>
  //          <Size>279658</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>images/sea_creatures/starfish123.jpg</Key>
  //          <LastModified>2017-01-19T16:45:52.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>images/sea_creatures/starfishåäö.jpg</Key>
  //          <LastModified>2017-01-19T18:07:11.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>new folder/</Key>
  //          <LastModified>2014-11-26T18:36:22.000Z</LastModified>
  //          <ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
  //          <Size>0</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>new_starfish.jpg</Key>
  //          <LastModified>2017-03-20T13:22:57.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>pigs.xml</Key>
  //          <LastModified>2017-03-20T13:22:58.000Z</LastModified>
  //          <ETag>"8252a4499a0df9afbc5d8f3d9995d816"</ETag>
  //          <Size>2804</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>somethingBig.zip</Key>
  //          <LastModified>2016-09-26T14:29:36.000Z</LastModified>
  //          <ETag>"109aa5c86378979c7b93752163c7a51f-3"</ETag>
  //          <Size>13089458</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish.jpg</Key>
  //          <LastModified>2017-03-12T17:18:16.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish/</Key>
  //          <LastModified>2014-11-10T16:07:45.000Z</LastModified>
  //          <ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
  //          <Size>0</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish/starfish.jpg</Key>
  //          <LastModified>2014-11-10T16:08:05.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish/starfish2.jpg</Key>
  //          <LastModified>2014-11-19T16:36:38.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish/starfish3.jpg</Key>
  //          <LastModified>2014-11-24T20:33:11.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish2.jpg</Key>
  //          <LastModified>2012-04-20T17:06:45.000Z</LastModified>
  //          <ETag>"525887bb7ff22c9b7f5446cb9748d59e"</ETag>
  //          <Size>5987</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfish3.jpg</Key>
  //          <LastModified>2012-04-11T12:10:40.000Z</LastModified>
  //          <ETag>"525887bb7ff22c9b7f5446cb9748d59e"</ETag>
  //          <Size>5987</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfishA.jpg</Key>
  //          <LastModified>2016-05-10T13:44:15.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>starfishCust.jpg</Key>
  //          <LastModified>2014-11-13T00:25:17.000Z</LastModified>
  //          <ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
  //          <Size>6229</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //      <Contents>
  //          <Key>xyz.ics</Key>
  //          <LastModified>2011-05-25T13:52:51.000Z</LastModified>
  //          <ETag>"12ed2e28ff4abd4faead06b491836e64"</ETag>
  //          <Size>1833</Size>
  //          <Owner>
  //              <ID>cf311e0b13e11b646949b7107f11b2bfbc5358f90df39395054ec40000695168</ID>
  //              <DisplayName>johnson</DisplayName>
  //          </Owner>
  //          <StorageClass>STANDARD</StorageClass>
  //      </Contents>
  //  </ListBucketResult>


  http.Free;
  xml.Free;
  dt.Free;
  dtObj.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.