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
(Go) 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).
// 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.NewRest() // Connect to the Amazon AWS REST server. bTls := true port := 443 bAutoReconnect := true 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.NewAuthAws() authAws.SetAccessKey("AWS_ACCESS_KEY") authAws.SetSecretKey("AWS_SECRET_KEY") authAws.SetServiceName("s3") success = rest.SetAuthAws(authAws) // Set the bucket name via the HOST header. // In this case, the bucket name is "chilkat100". rest.SetHost("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.LastMethodSuccess() != true { fmt.Println(rest.LastErrorText()) rest.DisposeRest() authAws.DisposeAuthAws() return } // When successful, the S3 Storage service will respond with a 200 response code, // with an XML body. if rest.ResponseStatusCode() != 200 { // Examine the request/response to see what happened. fmt.Println("response status code = ", rest.ResponseStatusCode()) fmt.Println("response status text = ", rest.ResponseStatusText()) fmt.Println("response header: ", rest.ResponseHeader()) fmt.Println("response body: ", *responseXml) fmt.Println("---") fmt.Println("LastRequestStartLine: ", rest.LastRequestStartLine()) fmt.Println("LastRequestHeader: ", rest.LastRequestHeader()) } // See http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html // for a sample of the XML response. fmt.Println(*responseXml) fmt.Println("----") // Save the XML response to a file, and show the UploadId.. xml := chilkat.NewXml() xml.LoadXml(*responseXml) xml.SaveXml("s3_multipart_uploads/initiate.xml") fmt.Println("UploadId = ", *xml.GetChildContent("UploadId")) fmt.Println("Multipart upload initiated.") rest.DisposeRest() authAws.DisposeAuthAws() xml.DisposeXml() |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.