Sample code for 30+ languages & platforms
Delphi DLL

PassiveUseHostAddr

See more FTP Examples

Some FTP servers need this option for passive data transfers. In passive mode, the data connection is initiated by the client sending a PASV command to the FTP server, and the FTP server responds with the IP address and port number where it is listening for the client's connection request. When the PassiveUseHostAddr property is set, the IP address in the PASV response is discarded and the IP address of the remote endpoint of the existing control connection is used instead.

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, Ftp2;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
ftp: HCkFtp2;
localFilename: PWideChar;
remoteFilename: PWideChar;

begin
success := False;

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

ftp := CkFtp2_Create();

CkFtp2_putHostname(ftp,'ftp.example.com');
CkFtp2_putUsername(ftp,'login');
CkFtp2_putPassword(ftp,'password');

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

// Set the PassiveUseHostAddr property.
CkFtp2_putPassiveUseHostAddr(ftp,True);

// Change to the remote directory where the file will be uploaded.
success := CkFtp2_ChangeRemoteDir(ftp,'junk');
if (success <> True) then
  begin
    Memo1.Lines.Add(CkFtp2__lastErrorText(ftp));
    Exit;
  end;

// Upload a file.
localFilename := 'hamlet.xml';
remoteFilename := 'hamlet.xml';

success := CkFtp2_PutFile(ftp,localFilename,remoteFilename);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkFtp2__lastErrorText(ftp));
    Exit;
  end;

success := CkFtp2_Disconnect(ftp);

Memo1.Lines.Add('File Uploaded!');

CkFtp2_Dispose(ftp);

end;