Sample code for 30+ languages & platforms
Go

SFTP Read Text File to String

See more SFTP Examples

Demonstrates how to download a text file from an SSH server directly into a string variable.

Chilkat Go Downloads

Go
    success := false

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

    sftp := chilkat.NewSFtp()

    // Set some timeouts, in milliseconds:
    sftp.SetConnectTimeoutMs(5000)
    sftp.SetIdleTimeoutMs(15000)

    // Connect to the SSH server.  
    // The standard SSH port = 22
    // The hostname may be a hostname or IP address.
    hostname := "sftp.example.com"
    port := 22
    success = sftp.Connect(hostname,port)
    if success != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    // Authenticate with the SSH server.  Chilkat SFTP supports
    // both password-based authenication as well as public-key
    // authentication.  This example uses password authenication.
    success = sftp.AuthenticatePw("myLogin","myPassword")
    if success != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    // After authenticating, the SFTP subsystem must be initialized:
    success = sftp.InitializeSftp()
    if success != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    // Open a file on the server:
    var handle *string = new(string)
    handle = sftp.OpenFile("hamlet.xml","readOnly","openExisting")
    if sftp.LastMethodSuccess() != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    // Get the total size of this file (in bytes)
    bFollowLinks := false
    bIsHandle := true
    var numBytes int

    // bFollowLinks is ignored because we are passing a handle
    // and not a remote filename.
    // There are alternative methods for handling file sizes
    // greater than 32-bit.  (See the reference documentation.)
    numBytes = sftp.GetFileSize32(*handle,bFollowLinks,bIsHandle)
    if numBytes < 0 {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    // The charset indicates the character encoding of the text
    // file on the SSH server.   Setting the charset correctly
    // allows the Chilkat SFTP component to correctly interpret
    // the bytes that represent the characters.
    var charset string
    charset = "ansi"
    var fileContents *string = new(string)
    fileContents = sftp.ReadFileText(*handle,numBytes,charset)
    if sftp.LastMethodSuccess() != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    } else {
        fmt.Println("Received file:")
        fmt.Println(*fileContents)
    }

    // Close the file.
    success = sftp.CloseHandle(*handle)
    if success != true {
        fmt.Println(sftp.LastErrorText())
        sftp.DisposeSFtp()
        return
    }

    fmt.Println("Success.")

    sftp.DisposeSFtp()