Sample code for 30+ languages & platforms
PureBasic

SFTP Download all Files in a Directory

See more SFTP Examples

Demonstrates how to download all files in a remote directory. This example uses the SyncTreeDownload method in a non-recursive mode that forces the download of all files, regardless of date/time or size differences.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSFtp.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

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

    success = CkSFtp::ckConnect(sftp,"my-ssh-server.com",22)
    If success = 1
        success = CkSFtp::ckAuthenticatePw(sftp,"mySshLogin","mySshPassword")
    EndIf

    If success = 1
        success = CkSFtp::ckInitializeSftp(sftp)
    EndIf

    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Download all the files from the remote directory "syncDownloadTest/xml"
    ; into our local directory "qa_output"
    ; Both directories are relative paths.  The remote directory
    ; is relative to the HOME directory of the SSH user account.
    ; The local directory is relative to the current working directory of the process.
    ; It is also possible to use absolute paths.

    remoteDir.s = "syncDownloadTest/xml"
    localDir.s = "qa_output"
    ; Mode 0 causes SyncTreeDownload to download all files.
    mode.i = 0
    ; Do not recursively descend the remote directory tree.  Just download all the files in specified directory.
    recursive.i = 0
    success = CkSFtp::ckSyncTreeDownload(sftp,remoteDir,localDir,mode,recursive)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkSFtp::ckDispose(sftp)


    ProcedureReturn
EndProcedure