|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (Perl) Initiate Multipart S3 UploadInitiates an Amazon AWS multipart S3 upload. The following is quoted from the Amazon Simple Storage Service Documentation: "The Multipart upload API enables you to upload large objects in parts. You can use this API to upload new large objects or make a copy of an existing object (see Operations on Objects). 
 use chilkat(); # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # Other S3 Multipart Upload Examples: # S3 Upload Parts # Complete Multipart Upload # Abort Multipart Upload # List Parts $rest = chilkat::CkRest->new(); # Connect to the Amazon AWS REST server. $bTls = 1; $port = 443; $bAutoReconnect = 1; $success = $rest->Connect("s3.amazonaws.com",$port,$bTls,$bAutoReconnect); # ---------------------------------------------------------------------------- # Important: For buckets created in regions outside us-east-1, # there are three important changes that need to be made. # See Working with S3 Buckets in Non-us-east-1 Regions for the details. # ---------------------------------------------------------------------------- # Provide AWS credentials for the REST call. $authAws = chilkat::CkAuthAws->new(); $authAws->put_AccessKey("AWS_ACCESS_KEY"); $authAws->put_SecretKey("AWS_SECRET_KEY"); $authAws->put_ServiceName("s3"); $success = $rest->SetAuthAws($authAws); # Set the bucket name via the HOST header. # In this case, the bucket name is "chilkat100". $rest->put_Host("chilkat100.s3.amazonaws.com"); # The local file path (on our local system) to upload. $fileToUploadPath = "s3_multipart_uploads/somethingBig.zip"; # The HTTP request to initiate a multipart upload is a POST with no body content.. # This is the tricky part: We would be tempted to pass "/somethingBig.zip?uploads" # in the 2nd argument to FullRequestNoBody. However, we must pass only the path without query # params. The "uploads" query param must be added via AddQueryParam. This allows it to be included # in the AWS signature calculation for authentication. $rest->AddQueryParam("uploads",""); $responseXml = $rest->fullRequestNoBody("POST","/somethingBig.zip"); if ($rest->get_LastMethodSuccess() != 1) { print $rest->lastErrorText() . "\r\n"; exit; } # When successful, the S3 Storage service will respond with a 200 response code, # with an XML body. if ($rest->get_ResponseStatusCode() != 200) { # Examine the request/response to see what happened. print "response status code = " . $rest->get_ResponseStatusCode() . "\r\n"; print "response status text = " . $rest->responseStatusText() . "\r\n"; print "response header: " . $rest->responseHeader() . "\r\n"; print "response body: " . $responseXml . "\r\n"; print "---" . "\r\n"; print "LastRequestStartLine: " . $rest->lastRequestStartLine() . "\r\n"; print "LastRequestHeader: " . $rest->lastRequestHeader() . "\r\n"; } # See http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html # for a sample of the XML response. print $responseXml . "\r\n"; print "----" . "\r\n"; # Save the XML response to a file, and show the UploadId.. $xml = chilkat::CkXml->new(); $xml->LoadXml($responseXml); $xml->SaveXml("s3_multipart_uploads/initiate.xml"); print "UploadId = " . $xml->getChildContent("UploadId") . "\r\n"; print "Multipart upload initiated." . "\r\n"; | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.