|  | 
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
| (Delphi DLL) 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). 
 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, AuthAws, Rest, Xml; ... procedure TForm1.Button1Click(Sender: TObject); var rest: HCkRest; bTls: Boolean; port: Integer; bAutoReconnect: Boolean; success: Boolean; authAws: HCkAuthAws; fileToUploadPath: PWideChar; responseXml: PWideChar; xml: HCkXml; begin // 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 := CkRest_Create(); // Connect to the Amazon AWS REST server. bTls := True; port := 443; bAutoReconnect := True; success := CkRest_Connect(rest,'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 := CkAuthAws_Create(); CkAuthAws_putAccessKey(authAws,'AWS_ACCESS_KEY'); CkAuthAws_putSecretKey(authAws,'AWS_SECRET_KEY'); CkAuthAws_putServiceName(authAws,'s3'); success := CkRest_SetAuthAws(rest,authAws); // Set the bucket name via the HOST header. // In this case, the bucket name is "chilkat100". CkRest_putHost(rest,'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. CkRest_AddQueryParam(rest,'uploads',''); responseXml := CkRest__fullRequestNoBody(rest,'POST','/somethingBig.zip'); if (CkRest_getLastMethodSuccess(rest) <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; // When successful, the S3 Storage service will respond with a 200 response code, // with an XML body. if (CkRest_getResponseStatusCode(rest) <> 200) then begin // Examine the request/response to see what happened. Memo1.Lines.Add('response status code = ' + IntToStr(CkRest_getResponseStatusCode(rest))); Memo1.Lines.Add('response status text = ' + CkRest__responseStatusText(rest)); Memo1.Lines.Add('response header: ' + CkRest__responseHeader(rest)); Memo1.Lines.Add('response body: ' + responseXml); Memo1.Lines.Add('---'); Memo1.Lines.Add('LastRequestStartLine: ' + CkRest__lastRequestStartLine(rest)); Memo1.Lines.Add('LastRequestHeader: ' + CkRest__lastRequestHeader(rest)); end; // See http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html // for a sample of the XML response. Memo1.Lines.Add(responseXml); Memo1.Lines.Add('----'); // Save the XML response to a file, and show the UploadId.. xml := CkXml_Create(); CkXml_LoadXml(xml,responseXml); CkXml_SaveXml(xml,'s3_multipart_uploads/initiate.xml'); Memo1.Lines.Add('UploadId = ' + CkXml__getChildContent(xml,'UploadId')); Memo1.Lines.Add('Multipart upload initiated.'); CkRest_Dispose(rest); CkAuthAws_Dispose(authAws); CkXml_Dispose(xml); end; | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.