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
(DataFlex) S3 Complete a Multipart UploadThis operation completes a multipart upload by assembling previously uploaded parts. Processing of a Complete Multipart Upload request could take several minutes to complete. After Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends whitespace characters to keep the connection from timing out. Because a request could fail after the initial 200 OK response has been sent, it is important that you check the response body to determine whether the request succeeded. This example sends a POST request to complete a multipart upload, which looks like this: POST /ObjectName?uploadId=UploadId HTTP/1.1 Host: BucketName.s3.amazonaws.com Date: Date Content-Length: Size Authorization: authorization string <CompleteMultipartUpload> <Part> <PartNumber>PartNumber</PartNumber> <ETag>ETag</ETag> </Part> ... </CompleteMultipartUpload>
Use ChilkatAx-win32.pkg Procedure Test Init Handle hoXmlInit Boolean iSuccess String sUploadId PartsList Handle hoXmlPartsList Handle hoRest Boolean iBTls Integer iPort Boolean iBAutoReconnect Variant vAuthAws Handle hoAuthAws String sResponseXml Handle hoXml String sTemp1 Integer iTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // The 1st step in an S3 multipart upload is to initiate it, // as shown here: Initiate S3 Multipart Upload // The 2nd step is to upload the parts // as shown here: S3 Upload Parts // The 3rd and final step (this example) is to complete the multipart upload. // Other S3 Multipart Upload Examples: // Abort Multipart Upload // List Parts // When the multipart upload was initiated, an UploadId was provided in the XML response, and it // was saved to a file. Steps 2 and 3 begin by loading the XML and getting // the Upload ID. Get Create (RefClass(cComChilkatXml)) To hoXmlInit If (Not(IsComObjectCreated(hoXmlInit))) Begin Send CreateComObject of hoXmlInit End Get ComLoadXmlFile Of hoXmlInit "s3_multipart_uploads/initiate.xml" To iSuccess If (iSuccess <> True) Begin Showln "Did not find the initiate.xml XML file." Procedure_Return End Get ComGetChildContent Of hoXmlInit "UploadId" To sUploadId Showln "UploadId = " sUploadId // We'll also need the XML file that contains a record of the parts // with part numbers and ETags. (This file was produced when parts were being uploaded.) Get Create (RefClass(cComChilkatXml)) To hoXmlPartsList If (Not(IsComObjectCreated(hoXmlPartsList))) Begin Send CreateComObject of hoXmlPartsList End Get ComLoadXmlFile Of hoXmlPartsList "s3_multipart_uploads/partsList.xml" To iSuccess If (iSuccess <> True) Begin Showln "Did not find the partsList.xml XML file." Procedure_Return End Get Create (RefClass(cComChilkatRest)) To hoRest If (Not(IsComObjectCreated(hoRest))) Begin Send CreateComObject of hoRest End // Connect to the Amazon AWS REST server. Move True To iBTls Move 443 To iPort Move True To iBAutoReconnect Get ComConnect Of hoRest "s3.amazonaws.com" iPort iBTls iBAutoReconnect To iSuccess // ---------------------------------------------------------------------------- // 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. Get Create (RefClass(cComChilkatAuthAws)) To hoAuthAws If (Not(IsComObjectCreated(hoAuthAws))) Begin Send CreateComObject of hoAuthAws End Set ComAccessKey Of hoAuthAws To "AWS_ACCESS_KEY" Set ComSecretKey Of hoAuthAws To "AWS_SECRET_KEY" Set ComServiceName Of hoAuthAws To "s3" Get pvComObject of hoAuthAws to vAuthAws Get ComSetAuthAws Of hoRest vAuthAws To iSuccess // Set the bucket name via the HOST header. // In this case, the bucket name is "chilkat100". Set ComHost Of hoRest To "chilkat100.s3.amazonaws.com" // The "uploadId=UploadId" must be added as a query parameter. This allows it to be // incorporated into the AWS signature calculation, which is a requirement. // Therefore, we use AddQueryParam: Get ComAddQueryParam Of hoRest "uploadId" sUploadId To iSuccess // Our ObjectName in this case is "somethingBig.zip". Get ComGetXml Of hoXmlPartsList To sTemp1 Get ComFullRequestString Of hoRest "POST" "/somethingBig.zip" sTemp1 To sResponseXml Get ComLastMethodSuccess Of hoRest To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoRest To sTemp1 Showln sTemp1 Procedure_Return End // When successful, the S3 Storage service will respond with a 200 response code, // with an XML body. Get ComResponseStatusCode Of hoRest To iTemp1 If (iTemp1 <> 200) Begin // Examine the request/response to see what happened. Get ComResponseStatusCode Of hoRest To iTemp1 Showln "response status code = " iTemp1 Get ComResponseStatusText Of hoRest To sTemp1 Showln "response status text = " sTemp1 Get ComResponseHeader Of hoRest To sTemp1 Showln "response header: " sTemp1 Showln "response body: " sResponseXml Showln "---" Get ComLastRequestStartLine Of hoRest To sTemp1 Showln "LastRequestStartLine: " sTemp1 Get ComLastRequestHeader Of hoRest To sTemp1 Showln "LastRequestHeader: " sTemp1 End // Load the XML response into Chilkat XMl and emit via GetXml to see the XML in a pretty-printed (indented) readable format. Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Get ComLoadXml Of hoXml sResponseXml To iSuccess Get ComGetXml Of hoXml To sTemp1 Showln sTemp1 Showln "----" Showln "Multipart upload completed." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.