Sample code for 30+ languages & platforms
PureBasic

SFTP Simplified Download

See more SFTP Examples

Demonstrates how to SFTP download a file by passing a remote filepath to DownloadFileByName.

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

    ; Set some timeouts, in milliseconds:
    CkSFtp::setCkConnectTimeoutMs(sftp, 15000)
    CkSFtp::setCkIdleTimeoutMs(sftp, 15000)

    ; Connect to the SSH server.  
    ; The standard SSH port = 22
    ; The hostname may be a hostname or IP address.
    hostname.s = "sftp.example.com"
    port.i = 22
    success = CkSFtp::ckConnect(sftp,hostname,port)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Authenticate with the SSH server.  Chilkat SFTP supports
    ; both password-based authenication as well as public-key
    ; authentication.  This example uses password authenication.
    success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; After authenticating, the SFTP subsystem must be initialized:
    success = CkSFtp::ckInitializeSftp(sftp)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Download the file:
    remoteFilePath.s
    localFilePath.s
    localFilePath = "c:/temp/hamlet.xml"
    ; Note: The remote filepath may be an absolute filepath,
    ; a relative filepath, or simply a filename.  
    ; Relative filepaths are always relative to the home directory
    ; of the SFTP/SSH user account.  There is no such thing
    ; as "current remote directory" in the SFTP protocol. 
    ; A filename with no path implies that the file is located
    ; in the SFTP user account's home directory.
    remoteFilePath = "subdir1/subdir2/hamlet.xml"
    success = CkSFtp::ckDownloadFileByName(sftp,remoteFilePath,localFilePath)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkSFtp::ckDispose(sftp)


    ProcedureReturn
EndProcedure