Sample code for 30+ languages & platforms
PureBasic

FTP Download File to a Stream

Demonstrates how to FTP download a file to a Chilkat stream.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkFtp2.pb"
IncludeFile "CkStream.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    CkFtp2::setCkHostname(ftp, "my-ftp-server.com")
    CkFtp2::setCkPort(ftp, 21)
    CkFtp2::setCkUsername(ftp, "mFtpLogin")
    CkFtp2::setCkPassword(ftp, "myFtpPassword")
    CkFtp2::setCkAuthTls(ftp, 1)
    CkFtp2::setCkPassive(ftp, 1)

    ; Connect and login to the FTP server using TLS.
    success = CkFtp2::ckConnect(ftp)
    If success <> 1
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    ; Move to the sub-directory (from the FTP user's home directory) where the file is located.
    success = CkFtp2::ckChangeRemoteDir(ftp,"temp")
    If success = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        ProcedureReturn
    EndIf

    ; Stream to this local file:
    streamObj.i = CkStream::ckCreate()
    If streamObj.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkStream::setCkSinkFile(streamObj, "c:/temp/qa_output/penguins2.jpg")

    success = CkFtp2::ckGetFileToStream(ftp,"penguins2.jpg",streamObj)
    If success = 0
        Debug CkFtp2::ckLastErrorText(ftp)
        CkFtp2::ckDispose(ftp)
        CkStream::ckDispose(streamObj)
        ProcedureReturn
    EndIf

    CkFtp2::ckDisconnect(ftp)

    Debug "Success."


    CkFtp2::ckDispose(ftp)
    CkStream::ckDispose(streamObj)


    ProcedureReturn
EndProcedure