Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
FTP XML Directory Listing / Download Most Recently Modified FilesDemonstrates how to retrieve a directory listing in XML format, sort it by last-modified date, and download the 5 most recently modified files. Note: This example relies upon a new feature added to the GetXmlDirListing method. Namely, the resultant XML includes a "full" attribute with a date/time that is in a sortable format. This feature is available in the pre-release, or in new versions released after 20-May-2008.
#include <C_CkFtp2.h> #include <C_CkXml.h> void ChilkatSample(void) { HCkFtp2 ftp; BOOL success; const char * strXml; HCkXml xml; BOOL ascending; long n; HCkXml child; const char * filename; long i; ftp = CkFtp2_Create(); // Any string unlocks the component for the 1st 30-days. success = CkFtp2_UnlockComponent(ftp,"Anything for 30-day trial"); if (success != TRUE) { printf("%s\n",CkFtp2_lastErrorText(ftp)); return; } CkFtp2_putHostname(ftp,"ftp.chilkatsoft.com"); CkFtp2_putUsername(ftp,"myLogin"); CkFtp2_putPassword(ftp,"myPassword"); // Connect and login to the FTP server. success = CkFtp2_Connect(ftp); if (success != TRUE) { printf("%s\n",CkFtp2_lastErrorText(ftp)); return; } // Recursively download the listings for the complete // remote directory tree at the current remote dir. // In this case, we haven't called ChangeRemoteDir, // so the current remote dir is the root directory of the // FTP account. strXml = CkFtp2_getXmlDirListing(ftp,"*.asp"); if (strXml == 0 ) { printf("%s\n",CkFtp2_lastErrorText(ftp)); return; } // Load the XML directory listing into a Chilkat XML object: xml = CkXml_Create(); CkXml_LoadXml(xml,strXml); // Sort by a record attribute: ascending = FALSE; CkXml_SortRecordsByAttribute(xml,"lastModTime","full",ascending); // Download the 5 most recent files: n = CkXml_getNumChildren(xml); if (n > 5) { n = 5; } for (i = 0; i <= n - 1; i++) { child = CkXml_GetChild(xml,i); filename = CkXml_getChildContent(child,"name"); printf("%s\n",filename); success = CkFtp2_GetFile(ftp,filename,filename); if (success != TRUE) { printf("%s\n",CkFtp2_lastErrorText(ftp)); break; } CkXml_Dispose(child); } // The full sorted XML may be obtained like this: strXml = CkXml_getXml(xml); CkFtp2_Disconnect(ftp); CkFtp2_Dispose(ftp); CkXml_Dispose(xml); } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.