Objective-C
Objective-C
S3 Upload with Transfer Acceleration
See more Amazon S3 Examples
Demonstrates how to upload from a pre-signed URL with transfer acceleration.Chilkat Objective-C Downloads
#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";
// 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.
http.AwsEndpoint = @"s3-accelerate.amazonaws.com";
// 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 that will use s3-accelerate.amazonaws.com
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;
}
// The following URL can be copy-and-pasted into a browser..
NSLog(@"%@%@",@"Presigned URL for Upload: ",preSignedUrl);
// 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.)
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);
}