Sample code for 30+ languages & platforms
DataFlex

S3 Get Bucket Objects with CommonPrefixes

See more Amazon S3 Examples

Demonstrates how to get a list of bucket objects using the prefix and delimiter query params to get an XML result with CommonPrefixes.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    String sStrXml
    Handle hoXml
    String sPrefix
    Integer i
    Integer iCount_i
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // Insert your access key here:
    Set ComAwsAccessKey Of hoHttp To "AWS_ACCESS_KEY"

    // Insert your secret key here:
    Set ComAwsSecretKey Of hoHttp To "AWS_SECRET_KEY"

    // In this example, my bucket is "chilkat100".
    // It contains a number of folders, one of which is named "images".
    // I want to get a list of all sub-folders under the "images" folder
    Get ComS3_ListBucketObjects Of hoHttp "chilkat100?prefix=images/&delimiter=/" To sStrXml
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastStatus Of hoHttp To iTemp1
    Showln "Response status code = " iTemp1

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Get ComLoadXml Of hoXml sStrXml To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoXml To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // If the response status code was not 200, then the XML response is not a 
    // listing of objects, but instead contains error information.
    Get ComLastStatus Of hoHttp To iTemp1
    If (iTemp1 <> 200) Begin
        Get ComGetXml Of hoXml To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // A sample response is shown below.
    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1
    Showln "----"

    // Here is the list of sub-folders (i.e. CommonPrefixes)

    // <?xml version="1.0" encoding="UTF-8"?>
    // <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    //     <Name>chilkat100</Name>
    //     <Prefix>images/</Prefix>
    //     <Marker/>
    //     <MaxKeys>1000</MaxKeys>
    //     <Delimiter>/</Delimiter>
    //     <IsTruncated>false</IsTruncated>
    //     <CommonPrefixes>
    //         <Prefix>images/africa/</Prefix>
    //     </CommonPrefixes>
    //     <CommonPrefixes>
    //         <Prefix>images/sea_creatures/</Prefix>
    //     </CommonPrefixes>
    // </ListBucketResult>

    // The XML can be parsed like this:
    Move 0 To i
    Get ComNumChildrenHavingTag Of hoXml "CommonPrefixes" To iCount_i
    While (i < iCount_i)
        Set ComI Of hoXml To i
        Get ComGetChildContent Of hoXml "CommonPrefixes[i]|Prefix" To sPrefix
        Showln "Prefix = " sPrefix
        Move (i + 1) To i
    Loop



End_Procedure