Perl
Perl
Get FTP Directory Listing as XML
See more FTP Examples
Demonstrates how to call GetXmlDirListing and parse the results.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This example assumes Chilkat Ftp2 to have been previously unlocked.
# See Unlock Ftp2 for sample code.
$ftp = chilkat::CkFtp2->new();
$ftp->put_Hostname("www.my-ftp-server.com");
$ftp->put_Username("mFtpLogin");
$ftp->put_Password("myFtpPassword");
# Connect to the FTP server.
$success = $ftp->ConnectOnly();
if ($success != 1) {
print $ftp->lastErrorText() . "\r\n";
exit;
}
# Authenticate with the FTP server.
$success = $ftp->LoginAfterConnectOnly();
if ($success != 1) {
print $ftp->lastErrorText() . "\r\n";
exit;
}
# Retrieve (in XML format) the HOME directory of this FTP account.
$xmlListing = $ftp->getXmlDirListing("*.*");
if ($ftp->get_LastMethodSuccess() != 1) {
print $ftp->lastErrorText() . "\r\n";
exit;
}
# Now load the XML and parse it..
$xml = chilkat::CkXml->new();
$xml->LoadXml($xmlListing);
print $xml->getXml() . "\r\n";
# Iterate over the XML...
$i = 0;
$numEntries = $xml->get_NumChildren();
while ($i < $numEntries) {
# xEntry is a Xml
$xEntry = $xml->GetChild($i);
if ($xEntry->TagEquals("dir") == 1) {
print "Directory: " . $xEntry->content() . "\r\n";
}
else {
$sz = $xEntry->GetChildIntValue("size");
print "File: " . $xEntry->getChildContent("name") . ", size: " . $sz . "\r\n";
# xLastMod is a Xml
$xLastMod = $xEntry->FindChild("lastModTime");
if ($xEntry->get_LastMethodSuccess() == 1) {
$month = $xLastMod->GetAttrValueInt("m");
$year = $xLastMod->GetAttrValueInt("y");
$day = $xLastMod->GetAttrValueInt("d");
print " YYYY-MM-DD: " . $year . "-" . $month . "-" . $day . "\r\n";
}
}
$i = $i + 1;
}
$ftp->Disconnect();
print "Success." . "\r\n";
# 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>
#
#