Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Asynchronous HTTP Upload
See more Upload Examples
Demonstrates how to do an HTTP 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 Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Upload;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
upload: TUpload;
begin
success := False;
upload := TUpload.Create;
// Specify the page (ASP, ASP.NET, Perl, Python, Ruby, CGI, etc)
// that will process the HTTP Upload.
upload.Hostname := 'www.mywebserver.com';
upload.Path := '/receiveUpload.aspx';
// Add one or more files to be uploaded.
upload.AddFileReference('file1','dude.gif');
upload.AddFileReference('file2','pigs.xml');
upload.AddFileReference('file3','sample.doc');
// Begin the HTTP upload in a background thread:
success := upload.BeginUpload();
if (success <> True) then
begin
WriteLn(upload.LastErrorText);
end
else
begin
WriteLn('Upload started...');
end;
// Wait for the upload to finish.
// Print the progress as we wait...
while (upload.UploadInProgress = 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:
WriteLn(upload.PercentUploaded + '% ' + upload.NumBytesSent + '/' + upload.TotalUploadSize);
// Sleep 2/10ths of a second.
upload.SleepMs(200);
end;
// Did the upload succeed?
if (upload.UploadSuccess = True) then
begin
WriteLn('Files uploaded!');
end
else
begin
WriteLn(upload.LastErrorText);
end;
upload.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.