Sample code for 30+ languages & platforms
React Native

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 React Native Downloads

React Native
import { Ftp2 } from '@chilkat/react-native'

async function chilkatExample() {
  // 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.

  const ftp = new Ftp2();

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

  // Connect in clear text first (Ssl is false).
  try {
    await ftp.connectOnlyAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Upgrade the control channel to explicit TLS (AUTH TLS).
  try {
    await ftp.convertToTlsAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Now authenticate over the encrypted control channel.
  ftp.username = 'myFtpLogin';
  ftp.password = 'myPassword';
  try {
    await ftp.loginAfterConnectOnlyAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

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

  try {
    await ftp.disconnectAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }
}