Sample code for 30+ languages & platforms
Visual FoxPro

Generate an AWS (S3) Pre-Signed URL to Download File

See more Amazon S3 (new) Examples

Demonstrates how to generate a pre-signed URL to download a file from the Amazon S3 service.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcBucketName
LOCAL lcObjectName
LOCAL lcLocalFilePath
LOCAL lcAwsService
LOCAL lnNumSecondsValid
LOCAL lnBUseHttps
LOCAL lcPreSignedUrl

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')

loHttp.AwsAccessKey = "AWS_ACCESS_KEY"
loHttp.AwsSecretKey = "AWS_SECRET_KEY"

* Make sure to set your AWS region correctly
loHttp.AwsRegion = "us-east-1"

lcBucketName = "chilkat100"
lcObjectName = "starfish/starfish.jpg"
lcLocalFilePath = "qa_output/starfish.jpg"
lcAwsService = "s3"

* The signed URL will be valid for this number of seconds:
lnNumSecondsValid = 86400

* Choose between a URL beginning with "http://" or "https://"...
lnBUseHttps = 0

* Generate the pre-signed URL
lcPreSignedUrl = loHttp.S3_GenPresignedUrl("GET",lnBUseHttps,lcBucketName,lcObjectName,lnNumSecondsValid,lcAwsService)
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    CANCEL
ENDIF

* The following URL can be copy-and-pasted into a browser..
? "Pre-Signed AWS S3 URL: " + lcPreSignedUrl

* Here's an example of a pre-signed URL. 
* This URL will only work within 1 day (86400 seconds) after the time this example was published.
* 
*     http://chilkat100.s3.amazonaws.com/starfish/starfish.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=16QXXDGY83AJJR6RVQ02%2F20170111%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20170111T161959Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=72bf4fd9a15d7bbcdd313a3318d937a778905f62a3fbff9b789d8dc28acd9232

* Now try to do an HTTP Download using the signed URL.
lnSuccess = loHttp.Download(lcPreSignedUrl,"c:/temp/qa_output/starfish.jpg")
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    CANCEL
ENDIF

? "Success."

RELEASE loHttp