Sample code for 30+ languages & platforms
DataFlex

S3 Upload with Transfer Acceleration

See more Amazon S3 Examples

Demonstrates how to upload from a pre-signed URL with transfer acceleration.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    String sBucketName
    String sObjectName
    String sAwsService
    String sHttpVerb
    Integer iNumSecondsValid
    Boolean iBUseHttps
    String sPreSignedUrl
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

    // This example requires the Chilkat 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

    Set ComAwsAccessKey Of hoHttp To "AWS_ACCESS_KEY"
    Set ComAwsSecretKey Of hoHttp To "AWS_SECRET_KEY"

    // Make sure to set your AWS region correctly
    Set ComAwsRegion Of hoHttp To "us-east-1"
    Move "chilkat200" To sBucketName
    Move "starfish/starfish.jpg" To sObjectName
    Move "s3" To sAwsService
    Move "PUT" To sHttpVerb

    // To use S3 acceleration, we simply set the AwsEndpoint to "s3-accelerate.amazonaws.com".
    // Note: You must enable transfer acceleration on your bucket.  Acceleration incurs a higher cost.
    Set ComAwsEndpoint Of hoHttp To "s3-accelerate.amazonaws.com"

    // The signed URL will be valid for this number of seconds:
    Move 86400 To iNumSecondsValid

    // Choose between a URL beginning with "http://" or "https://"...
    Move True To iBUseHttps

    // Generate the pre-signed URL that will use s3-accelerate.amazonaws.com
    Get ComS3_GenPresignedUrl Of hoHttp sHttpVerb iBUseHttps sBucketName sObjectName iNumSecondsValid sAwsService To sPreSignedUrl
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The following URL can be copy-and-pasted into a browser..
    Showln "Presigned URL for Upload: " sPreSignedUrl

    // Here's an example of a pre-signed URL
    // 
    // http://chilkat200.s3-accelerate.amazonaws.com/starfish/starfish.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIBJLOVZVXAU2AFUA%2F20200623%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200623T234049Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=xxxxxeaea071178d772856c0a4e4c0114a8d9992f0d0812955e490d0exxxxxxx
    // 

    // Upload a local file using the pre-signed URL.
    // (Chilkat provides other methods to upload file data directly from binary or text data in memory.)
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoResp to vResp
    Get ComHttpFile Of hoHttp "PUT" sPreSignedUrl "qa_data/jpg/starfish.jpg" "image/jpg" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iTemp1
    Showln "response status code = " iTemp1
    Get ComContentLength Of hoResp To iTemp1
    Showln "response body size: " iTemp1
    Get ComContentLength Of hoResp To iTemp1
    If (iTemp1 > 0) Begin
        Showln "response body:"
        Get ComBodyStr Of hoResp To sTemp1
        Showln sTemp1
    End



End_Procedure