Sample code for 30+ languages & platforms
Delphi ActiveX

Synchronize Remote Directory Tree

See more FTP Examples

Uploads a directory tree from the local filesystem to the FTP server. Synchronization modes include:

mode=0: Upload all files
mode=1: Upload all files that do not exist on the FTP server.
mode=2: Upload newer or non-existant files.
mode=3: Upload only newer files. If a file does not already exist on the FTP server, it is not uploaded.

Chilkat Delphi ActiveX Downloads

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
ftp: TChilkatFtp2;
mode: Integer;

begin
success := 0;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

ftp := TChilkatFtp2.Create(Self);

ftp.Hostname := 'ftp.example.com';
ftp.Username := 'login';
ftp.Password := 'password';

ftp.KeepSessionLog := 1;

// Connect and login to the FTP server.
success := ftp.Connect();
if (success <> 1) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// Set the current remote directory to the root of
// the tree where files are uploaded.
success := ftp.ChangeRemoteDir('/abc123');
if (success <> 1) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// Recursively upload all non-existant and newer files.
mode := 2;
success := ftp.SyncRemoteTree('c:/temp/abc123',mode);
if (success <> 1) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

success := ftp.Disconnect();

// Display the session log.  
Memo1.Lines.Add(ftp.SessionLog);
end;