Sample code for 30+ languages & platforms
Delphi ActiveX

Synchronize Local Directory Tree

See more FTP Examples

Downloads files from the FTP server to a local directory tree. Synchronization modes include:

mode=0: Download all files
mode=1: Download all files that do not exist on the local filesystem.
mode=2: Download newer or non-existant files.
mode=3: Download only newer files. If a file does not already exist on the local filesystem, it is not downloaded from the server..
mode=5: Download only missing files or files with size differences.
mode=6: Same as mode 5, but also download newer files.
mode=99: Do not download files, but instead delete remote files that do not exist locally.

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 to be downloaded.
success := ftp.ChangeRemoteDir('/subDir1');
if (success <> 1) then
  begin
    Memo1.Lines.Add(ftp.LastErrorText);
    Exit;
  end;

// Recursively download all non-existant and newer files.
mode := 2;
success := ftp.SyncLocalTree('c:/temp/subDir1',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;