DataFlex
DataFlex
SFTP Read Directory Listing
See more SFTP Examples
Demonstrates how to download a directory listing and iterate over the files.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSftp
String sHostname
Integer iPort
String sHandle
Variant vDirListing
Handle hoDirListing
Variant vFileObj
Handle hoFileObj
Integer i
Integer n
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Important: It is helpful to send the contents of the
// sftp.LastErrorText property when requesting support.
Get Create (RefClass(cComChilkatSFtp)) To hoSftp
If (Not(IsComObjectCreated(hoSftp))) Begin
Send CreateComObject of hoSftp
End
// Set some timeouts, in milliseconds:
Set ComConnectTimeoutMs Of hoSftp To 5000
Set ComIdleTimeoutMs Of hoSftp To 10000
// Connect to the SSH server.
// The standard SSH port = 22
// The hostname may be a hostname or IP address.
Move "www.my-sftp-server.com" To sHostname
Move 22 To iPort
Get ComConnect Of hoSftp sHostname iPort To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// Authenticate with the SSH server. Chilkat SFTP supports
// both password-based authenication as well as public-key
// authentication. This example uses password authenication.
Get ComAuthenticatePw Of hoSftp "myLogin" "myPassword" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// After authenticating, the SFTP subsystem must be initialized:
Get ComInitializeSftp Of hoSftp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// Open a directory on the server...
// Paths starting with a slash are "absolute", and are relative
// to the root of the file system. Names starting with any other
// character are relative to the user's default directory (home directory).
// A path component of ".." refers to the parent directory,
// and "." refers to the current directory.
Get ComOpenDir Of hoSftp "." To sHandle
Get ComLastMethodSuccess Of hoSftp To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// Download the directory listing:
Get Create (RefClass(cComChilkatSFtpDir)) To hoDirListing
If (Not(IsComObjectCreated(hoDirListing))) Begin
Send CreateComObject of hoDirListing
End
Get pvComObject of hoDirListing to vDirListing
Get ComReadDirListing Of hoSftp sHandle vDirListing To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// Close the handle for the directory listing.
Get ComCloseHandle Of hoSftp sHandle To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
// Iterate over the files.
Get Create (RefClass(cComChilkatSFtpFile)) To hoFileObj
If (Not(IsComObjectCreated(hoFileObj))) Begin
Send CreateComObject of hoFileObj
End
Move 0 To i
Get ComNumFilesAndDirs Of hoDirListing To n
While (i < n)
Get pvComObject of hoFileObj to vFileObj
Get ComFileAt Of hoDirListing i vFileObj To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoDirListing To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComFilename Of hoFileObj To sTemp1
Showln sTemp1
Get ComFileType Of hoFileObj To sTemp1
Showln sTemp1
Get ComSize32 Of hoFileObj To iTemp1
Showln "Size in bytes: " iTemp1
Showln "----"
Move (i + 1) To i
Loop
Showln "Success."
End_Procedure