PureBasic
PureBasic
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 PureBasic Downloads
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, 5000)
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
; Open a file on the server:
handle.s
handle = CkSFtp::ckOpenFile(sftp,"hamlet.xml","readOnly","openExisting")
If CkSFtp::ckLastMethodSuccess(sftp) <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Get the total size of this file (in bytes)
bFollowLinks.i = 0
bIsHandle.i = 1
numBytes.i
; 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 = CkSFtp::ckGetFileSize32(sftp,handle,bFollowLinks,bIsHandle)
If numBytes < 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; 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.
charset.s
charset = "ansi"
fileContents.s
fileContents = CkSFtp::ckReadFileText(sftp,handle,numBytes,charset)
If CkSFtp::ckLastMethodSuccess(sftp) <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
Else
Debug "Received file:"
Debug fileContents
EndIf
; Close the file.
success = CkSFtp::ckCloseHandle(sftp,handle)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
Debug "Success."
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndProcedure