Sample code for 30+ languages & platforms
React Native

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat React Native Downloads

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

async function chilkatExample() {
  // This example assumes Chilkat Ftp2 to have been previously unlocked.
  // See Unlock Ftp2 for sample code.

  const ftp = new Ftp2();

  ftp.hostname = 'www.my-ftp-server.com';
  ftp.username = 'mFtpLogin';
  ftp.password = 'myFtpPassword';

  // Connect to the FTP server.
  try {
    await ftp.connectOnlyAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Authenticate with the FTP server.
  try {
    await ftp.loginAfterConnectOnlyAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Retrieve (in XML format) the HOME directory of this FTP account.
  let xmlListing: string;
  try {
    xmlListing = await ftp.getXmlDirListingAsync('*.*');
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Now load the XML and parse it..
  const xml = new Xml();
  xml.loadXml(xmlListing);
  console.log(xml.getXml());

  // Iterate over the XML...
  let i = 0;
  const numEntries = xml.numChildren;
  while (i < numEntries) {
    const xEntry = xml.getChild(i);
    if (xEntry.tagEquals('dir')) {
      console.log(`Directory: ${xEntry.content}`);
    } else {
      const sz = xEntry.getChildIntValue('size');
      console.log(`File: ${xEntry.getChildContent('name')}, size: ${sz}`);
      try {
        const xLastMod = xEntry.findChild('lastModTime');
        const month = xLastMod.getAttrValueInt('m');
        const year = xLastMod.getAttrValueInt('y');
        const day = xLastMod.getAttrValueInt('d');
        console.log(`    YYYY-MM-DD: ${year}-${month}-${day}`);
      } catch {
        // xEntry.findChild() failed; continue anyway.
      }
    }

    i++;
  }

  await ftp.disconnectAsync();

  console.log('Success.');

  // Sample XML directory listing:
  // <?xml version="1.0" encoding="utf-8" ?>
  // <remoteDir>
  //     <dir>Desktop</dir>
  //     <dir>Documents</dir>
  //     <dir>Downloads</dir>
  //     <dir>Music</dir>
  //     <dir>Pictures</dir>
  //     <dir>Public</dir>
  //     <dir>Templates</dir>
  //     <dir>Videos</dir>
  //     <file>
  //         <name>c.py</name>
  //         <size>1244</size>
  //         <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>cacerts_linux</name>
  //         <size>177207</size>
  //         <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>empty.txt</name>
  //         <size>0</size>
  //         <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>hamlet.xml</name>
  //         <size>279658</size>
  //         <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" />
  //     </file>
  // </remoteDir>
  // 
  // 
}