Sample code for 30+ languages & platforms
Delphi DLL

Bandwidth Throttled Asynchronous HTTP Upload

See more Upload Examples

Demonstrates how to do an HTTP upload asynchronously in a background thread with limiting the rate to an approximate number of bytes/second. The only difference between this example and one without bandwidth throttling is that the BandwidthThrottleUp property is set.

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');

// Set the BandwidthThrottleUp property to throttle to approx 64K/second
CkUpload_putBandwidthThrottleUp(upload,65536);

// 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;