Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) S3 Rename FileSee more Amazon S3 (new) ExamplesDemonstrates how to rename a file on Amazon S3. Renaming an object (file) in AWS S3 using the AWS S3 API involves copying the object to a new location with the desired name and then deleting the original object. For more information, see https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#API_CopyObject_Examples
#import <CkoRest.h> #import <CkoAuthAws.h> #import <CkoStringBuilder.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoRest *rest = [[CkoRest alloc] init]; // Connect to the Amazon AWS REST server in the desired region. BOOL bTls = YES; int port = 443; BOOL bAutoReconnect = YES; BOOL success = [rest Connect: @"s3-us-west-2.amazonaws.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect]; // Provide AWS credentials. CkoAuthAws *authAws = [[CkoAuthAws alloc] init]; authAws.AccessKey = @"AWS_ACCESS_KEY"; authAws.SecretKey = @"AWS_SECRET_KEY"; authAws.ServiceName = @"s3"; // This particular bucket is in the Oregon region, as opposed to the US Standard, // therefore the Region must be set appropriately. // Also note that we connected to "s3-us-west-2.amazonaws.com". authAws.Region = @"us-west-2"; [rest SetAuthAws: authAws]; // Set the bucket name via the HOST header. // In this case, the bucket name is "chilkat.qa". // Note that the Host header should use "bucketName.s3.amazonaws.com", not "bucketName.s3-us-west-2.amazonaws.com" rest.Host = @"chilkat.qa.s3.amazonaws.com"; // Copy /images/sea_creatures/starfish.jpg to /images/sea_creatures/starfish3.jpg // Notice here that the x-amz-copy-source includes the bucket in the source path, // but the target path passed to FullRequestNoBody does NOT contain the bucket (because the bucket // was already specified in the Host header). [rest AddHeader: @"x-amz-copy-source" value: @"/chilkat.qa/images/sea_creatures/starfish.jpg"]; CkoStringBuilder *sbResponse = [[CkoStringBuilder alloc] init]; success = [rest FullRequestNoBodySb: @"PUT" uriPath: @"/images/sea_creatures/starfish3.jpg" sb: sbResponse]; if (success == NO) { NSLog(@"%@",rest.LastErrorText); return; } // When successful, the S3 Storage service will respond with a 200 or 204 response code, // with an XML body. if ([rest.ResponseStatusCode intValue] != 200) { // Examine the request/response to see what happened. NSLog(@"%@%d",@"response status code = ",[rest.ResponseStatusCode intValue]); NSLog(@"%@%@",@"response status text = ",rest.ResponseStatusText); NSLog(@"%@%@",@"response header: ",rest.ResponseHeader); NSLog(@"%@%@",@"response body: ",[sbResponse GetAsString]); NSLog(@"%@",@"---"); NSLog(@"%@%@",@"LastRequestStartLine: ",rest.LastRequestStartLine); NSLog(@"%@%@",@"LastRequestHeader: ",rest.LastRequestHeader); } NSLog(@"%@",[sbResponse GetAsString]); NSLog(@"%@",@"Copy Successful."); // -------------------------------------- // Now we can delete the original file.. // -------------------------------------- // We no longer want to send the x-amz-copy-source header. Remove it. [rest RemoveHeader: @"x-amz-copy-source"]; success = [rest FullRequestNoBodySb: @"DELETE" uriPath: @"/images/sea_creatures/starfish.jpg" sb: sbResponse]; if (success == NO) { NSLog(@"%@",rest.LastErrorText); return; } // If successfully deleted, the response status code is 204 and the response body text will be empty. int statusCode = [rest.ResponseStatusCode intValue]; NSLog(@"%@%d",@"Response status code = ",statusCode); NSLog(@"%@",@"Response text = "); NSLog(@"%@",[sbResponse GetAsString]); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.