Sample code for 30+ languages & platforms
Dart

Capture the FTP Session Log

See more FTP Examples

Demonstrates the SessionLog property (with KeepSessionLog), which holds the in-memory FTP protocol conversation — commands and server replies — collected during the session.

Background: When an FTP operation fails for a non-obvious reason, the exact command/reply exchange is the most useful diagnostic there is, and SessionLog captures it verbatim once KeepSessionLog is enabled. Passwords are omitted, so it is safe to log or attach to a bug report. Over a long session it grows without bound; clear it with ClearSessionLog to bound memory or to isolate the log for one operation.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  final ftp = CkFtp2();

  ftp.hostname = 'ftp.example.com';
  ftp.username = 'myFtpLogin';

  // Normally you would not hard-code the password in source.  You should instead obtain it
  // from an interactive prompt, environment variable, or a secrets vault.
  ftp.password = 'myPassword';

  // Keep an in-memory log of the FTP protocol conversation for troubleshooting.  Passwords are
  // not recorded in it.
  ftp.keepSessionLog = true;

  try {
    ftp.connect();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  try {
    ftp.changeRemoteDir('public_html');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // The SessionLog contains the protocol commands and server replies collected so far.
  print(ftp.sessionLog);

  try {
    ftp.disconnect();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }
}