Sample code for 30+ languages & platforms
Swift

FTP Download Binary File to a Stream

See more FTP Examples

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

Note: This example requires Chilkat v9.5.0.67 or greater.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    let ftp = CkoFtp2()!

    ftp.hostname = "www.my-ftp-server.com"
    ftp.username = "mFtpLogin"
    ftp.password = "myFtpPassword"
    ftp.authTls = true
    ftp.passive = true

    // Connect and login to the FTP server using TLS.
    success = ftp.connect()
    if success != true {
        print("\(ftp.lastErrorText!)")
        return
    }

    // We'll read the incoming data chunk-by-chunk and write to an output file.
    let fac = CkoFileAccess()!
    success = fac.open(forWrite: "qa_output/penguins2.jpg")
    if success != true {
        print("\(fac.lastErrorText!)")
        return
    }

    let streamObj = CkoStream()!

    // Create a task to do the FTP download.
    var t: CkoTask? = ftp.getFile(toStreamAsync: "penguins2.jpg", to: streamObj)
    if ftp.lastMethodSuccess != true {
        print("\(ftp.lastErrorText!)")
        return
    }

    // Start the task in a background thread.
    t!.run()

    let bd = CkoBinData()!
    while streamObj.endOfStream != true {
        // Get the next chunk of JPG bytes.
        streamObj.readBd(binData: bd)
        // Do something with it..
        // In this simple example, we'll just write to the file.
        fac.fileWriteBd(binData: bd, offset: 0, numBytes: 0)
        // Clear for the next read.
        bd.clear()
    }

    fac.fileClose()

    t = nil

    print("Success.")

}