Sample code for 30+ languages & platforms
Visual FoxPro

S3 Upload with Transfer Acceleration

See more Amazon S3 Examples

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

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcBucketName
LOCAL lcObjectName
LOCAL lcAwsService
LOCAL lcHttpVerb
LOCAL lnNumSecondsValid
LOCAL lnBUseHttps
LOCAL lcPreSignedUrl
LOCAL loResp

lnSuccess = 0

* This example requires 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 = "chilkat200"
lcObjectName = "starfish/starfish.jpg"
lcAwsService = "s3"
lcHttpVerb = "PUT"

* 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.
loHttp.AwsEndpoint = "s3-accelerate.amazonaws.com"

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

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

* Generate the pre-signed URL that will use s3-accelerate.amazonaws.com
lcPreSignedUrl = loHttp.S3_GenPresignedUrl(lcHttpVerb,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..
? "Presigned URL for Upload: " + lcPreSignedUrl

* 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.)
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpFile("PUT",lcPreSignedUrl,"qa_data/jpg/starfish.jpg","image/jpg",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

? "response status code = " + STR(loResp.StatusCode)
? "response body size: " + STR(loResp.ContentLength)
IF (loResp.ContentLength > 0) THEN
    ? "response body:"
    ? loResp.BodyStr
ENDIF

RELEASE loHttp
RELEASE loResp