Sample code for 30+ languages & platforms
Dart

Upgrade an FTP Control Channel to TLS (ConvertToTls)

See more FTP Examples

Demonstrates the Chilkat Ftp2.ConvertToTls method, which upgrades an already-connected clear FTP control channel to explicit TLS. It takes no arguments and is used with a manually staged connection created by ConnectOnly while Ssl is disabled.

Background: This exposes the explicit-FTPS AUTH TLS upgrade as a discrete step for the rare case where you need to do something on the clear connection first — inspect the greeting, apply a workaround — before securing it. In the normal case you simply set AuthTls and let Connect perform the upgrade automatically; this manual path exists for staged control.

Chilkat Dart Downloads

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

void main() {
  // Demonstrates the Ftp2.ConvertToTls method, which upgrades an already-connected clear FTP control
  // channel to explicit TLS.  It takes no arguments.  It is used with a manually staged connection
  // created by ConnectOnly while Ssl is disabled.

  final ftp = CkFtp2();

  ftp.hostname = 'ftp.example.com';
  ftp.port = 21;

  // Connect in clear text first (Ssl is false).
  try {
    ftp.connectOnly();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Upgrade the control channel to explicit TLS (AUTH TLS).
  try {
    ftp.convertToTls();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Now authenticate over the encrypted control channel.
  ftp.username = 'myFtpLogin';
  ftp.password = 'myPassword';
  try {
    ftp.loginAfterConnectOnly();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('Control channel upgraded to TLS and logged in.');

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