Sample code for 30+ languages & platforms
Objective-C

Create S3 Pre-Signed URL for Upload

See more Amazon S3 Examples

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

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <NSString.h>
#import <CkoHttpResponse.h>

BOOL success = NO;

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

CkoHttp *http = [[CkoHttp alloc] init];

http.AwsAccessKey = @"AWS_ACCESS_KEY";
http.AwsSecretKey = @"AWS_SECRET_KEY";

// Make sure to set your AWS region correctly
http.AwsRegion = @"us-east-1";

NSString *bucketName = @"chilkat200";
NSString *objectName = @"starfish/starfish.jpg";
NSString *awsService = @"s3";
NSString *httpVerb = @"PUT";

// The signed URL will be valid for this number of seconds:
int numSecondsValid = 86400;

// Choose between a URL beginning with "http://" or "https://"...
BOOL bUseHttps = YES;

// Generate the pre-signed URL
NSString *preSignedUrl = [http S3_GenPresignedUrl: httpVerb useHttps: bUseHttps bucketName: bucketName path: objectName numSecondsValid: [NSNumber numberWithInt: numSecondsValid] awsService: awsService];
if (http.LastMethodSuccess == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

NSLog(@"%@%@",@"Presigned URL for Upload: ",preSignedUrl);

// 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
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpFile: @"PUT" url: preSignedUrl localFilePath: @"qa_data/jpg/starfish.jpg" contentType: @"image/jpg" response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

NSLog(@"%@%d",@"response status code = ",[resp.StatusCode intValue]);
NSLog(@"%@%d",@"response body size: ",resp.ContentLength);
if (resp.ContentLength > 0) {
    NSLog(@"%@",@"response body:");
    NSLog(@"%@",resp.BodyStr);
}