Sample code for 30+ languages & platforms
PureBasic

Get FTP Filenames as XML (NLST)

See more FTP Examples

Demonstrates the Chilkat Ftp2.NlstXml method, which sends NLST and returns the matching names in XML form. The only argument is appended literally; an empty string sends a bare NLST and a value like *.txt sends NLST *.txt.

Tip: Code to parse the returned XML can be generated at Chilkat Tools.

Background: NLST is the lightweight listing command: it returns only names, with none of the sizes, dates, or type information that LIST provides. That makes it fast and simple when a bare list of filenames is all you need — for example to drive a batch of downloads. Wrapping the result as XML gives you a clean, uniform structure to iterate regardless of how the server formats the raw NLST reply.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkFtp2.pb"

Procedure ChilkatExample()

    success.i = 0

    ;  Demonstrates the Ftp2.NlstXml method, which sends NLST and returns the matching names in XML
    ;  form.  The only argument is appended literally; an empty string sends a bare NLST.

    ftp.i = CkFtp2::ckCreate()
    If ftp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkFtp2::setCkHostname(ftp, "ftp.example.com")
    CkFtp2::setCkUsername(ftp, "myFtpLogin")

    ;  Normally you would not hard-code the password in source.  You should instead obtain it
    ;  from an interactive prompt, environment variable, or a secrets vault.
    CkFtp2::setCkPassword(ftp, "myPassword")

    success = CkFtp2::ckConnect(ftp)
    If success = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    success = CkFtp2::ckChangeRemoteDir(ftp,"public_html")
    If success = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    ;  NLST returns names only (no sizes, dates, or types).  "*.txt" sends NLST *.txt.
    xml.s = CkFtp2::ckNlstXml(ftp,"*.txt")
    If CkFtp2::ckLastMethodSuccess(ftp) = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    Debug xml

    success = CkFtp2::ckDisconnect(ftp)
    If success = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf



    CkFtp2::ckDispose(ftp)


    ProcedureReturn
EndProcedure