![]() |
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
(Swift) 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).
func chilkatTest() { // 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 let rest = CkoRest()! // Connect to the Amazon AWS REST server. var bTls: Bool = true var port: Int = 443 var bAutoReconnect: Bool = true var success: Bool = rest.connect("s3.amazonaws.com", port: port, tls: bTls, autoReconnect: 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. let authAws = CkoAuthAws()! authAws.accessKey = "AWS_ACCESS_KEY" authAws.secretKey = "AWS_SECRET_KEY" authAws.serviceName = "s3" success = rest.setAuthAws(authAws) // Set the bucket name via the HOST header. // In this case, the bucket name is "chilkat100". rest.host = "chilkat100.s3.amazonaws.com" // The local file path (on our local system) to upload. var fileToUploadPath: String? = "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", value: "") var responseXml: String? = rest.fullRequestNoBody("POST", uriPath: "/somethingBig.zip") if rest.lastMethodSuccess != true { print("\(rest.lastErrorText!)") return } // When successful, the S3 Storage service will respond with a 200 response code, // with an XML body. if rest.responseStatusCode.intValue != 200 { // Examine the request/response to see what happened. print("response status code = \(rest.responseStatusCode.intValue)") print("response status text = \(rest.responseStatusText!)") print("response header: \(rest.responseHeader!)") print("response body: \(responseXml!)") print("---") print("LastRequestStartLine: \(rest.lastRequestStartLine!)") print("LastRequestHeader: \(rest.lastRequestHeader!)") } // See http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html // for a sample of the XML response. print("\(responseXml!)") print("----") // Save the XML response to a file, and show the UploadId.. let xml = CkoXml()! xml.load(responseXml) xml.save("s3_multipart_uploads/initiate.xml") print("UploadId = \(xml.getChildContent("UploadId")!)") print("Multipart upload initiated.") } |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.