Sample code for 30+ languages & platforms
Delphi DLL

Asynchronous HTTPS Upload (TLS)

See more Upload Examples

Demonstrates how to do an HTTPS (TLS) upload asynchronously in a background thread.

A server-side C# example showing how to receive an upload is located at C# ASP.NET Code to Receive Upload

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Upload;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
upload: HCkUpload;

begin
success := False;

upload := CkUpload_Create();

// Specify the page (ASP, ASP.NET, Perl, Python, Ruby, CGI, etc)
// that will process the HTTP Upload.
CkUpload_putHostname(upload,'www.mywebserver.com');
CkUpload_putPath(upload,'/receiveUpload.aspx');

// Add one or more files to be uploaded.
CkUpload_AddFileReference(upload,'file1','dude.gif');
CkUpload_AddFileReference(upload,'file2','pigs.xml');
CkUpload_AddFileReference(upload,'file3','sample.doc');

// To upload using SSL/TLS (https), set the Ssl property = True
CkUpload_putSsl(upload,True);

// Begin the HTTP upload in a background thread:
success := CkUpload_BeginUpload(upload);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkUpload__lastErrorText(upload));
  end
else
  begin
    Memo1.Lines.Add('Upload started..');
  end;

// Wait for the upload to finish.
// Print the progress as we wait...
while (CkUpload_getUploadInProgress(upload) = True) do
  begin
    // We can abort the upload at any point by calling:
    // upload.AbortUpload();

    // Display the percentage complete and the number of bytes uploaded so far..
    // The total upload size will become set after the upload begins:
    Memo1.Lines.Add(IntToStr(CkUpload_getPercentUploaded(upload)) + '% ' + IntToStr(CkUpload_getNumBytesSent(upload)) + '/' + IntToStr(CkUpload_getTotalUploadSize(upload)));

    // Sleep 2/10ths of a second.
    CkUpload_SleepMs(upload,200);

  end;

// Did the upload succeed?
if (CkUpload_getUploadSuccess(upload) = True) then
  begin
    Memo1.Lines.Add('Files uploaded!');
  end
else
  begin
    Memo1.Lines.Add(CkUpload__lastErrorText(upload));
  end;

CkUpload_Dispose(upload);

end;