Sample code for 30+ languages & platforms
DataFlex

Create S3 Pre-Signed URL for Upload

See more Amazon S3 Examples

Demonstrates how to generate a pre-signed URL for S3 uploads.

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

    // 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
    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

    Showln "Presigned URL for Upload: " sPreSignedUrl

    // Here's an example of a pre-signed URL
    // 
    // http://chilkat200.s3.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
    // 

    // You can use the pre-signed URL to upload from Chilkat
    // For example, upload by streaming from a local file
    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