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
(Tcl) 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
load ./chilkat.dll # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set rest [new_CkRest] # Connect to the Amazon AWS REST server in the desired region. set bTls 1 set port 443 set bAutoReconnect 1 set success [CkRest_Connect $rest "s3-us-west-2.amazonaws.com" $port $bTls $bAutoReconnect] # Provide AWS credentials. set authAws [new_CkAuthAws] CkAuthAws_put_AccessKey $authAws "AWS_ACCESS_KEY" CkAuthAws_put_SecretKey $authAws "AWS_SECRET_KEY" CkAuthAws_put_ServiceName $authAws "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". CkAuthAws_put_Region $authAws "us-west-2" CkRest_SetAuthAws $rest $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" CkRest_put_Host $rest "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). CkRest_AddHeader $rest "x-amz-copy-source" "/chilkat.qa/images/sea_creatures/starfish.jpg" set sbResponse [new_CkStringBuilder] set success [CkRest_FullRequestNoBodySb $rest "PUT" "/images/sea_creatures/starfish3.jpg" $sbResponse] if {$success == 0} then { puts [CkRest_lastErrorText $rest] delete_CkRest $rest delete_CkAuthAws $authAws delete_CkStringBuilder $sbResponse exit } # When successful, the S3 Storage service will respond with a 200 or 204 response code, # with an XML body. if {[CkRest_get_ResponseStatusCode $rest] != 200} then { # Examine the request/response to see what happened. puts "response status code = [CkRest_get_ResponseStatusCode $rest]" puts "response status text = [CkRest_responseStatusText $rest]" puts "response header: [CkRest_responseHeader $rest]" puts "response body: [CkStringBuilder_getAsString $sbResponse]" puts "---" puts "LastRequestStartLine: [CkRest_lastRequestStartLine $rest]" puts "LastRequestHeader: [CkRest_lastRequestHeader $rest]" } puts [CkStringBuilder_getAsString $sbResponse] puts "Copy Successful." # -------------------------------------- # Now we can delete the original file.. # -------------------------------------- # We no longer want to send the x-amz-copy-source header. Remove it. CkRest_RemoveHeader $rest "x-amz-copy-source" set success [CkRest_FullRequestNoBodySb $rest "DELETE" "/images/sea_creatures/starfish.jpg" $sbResponse] if {$success == 0} then { puts [CkRest_lastErrorText $rest] delete_CkRest $rest delete_CkAuthAws $authAws delete_CkStringBuilder $sbResponse exit } # If successfully deleted, the response status code is 204 and the response body text will be empty. set statusCode [CkRest_get_ResponseStatusCode $rest] puts "Response status code = $statusCode" puts "Response text = " puts [CkStringBuilder_getAsString $sbResponse] delete_CkRest $rest delete_CkAuthAws $authAws delete_CkStringBuilder $sbResponse |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.