Class wwSftpClient
This class provides SFTP (Secure FTP over SSH) support for connecting to SFTP servers.
DO wwSftpClient
DO wwutils && for UI helpers only
*** Using Rebex Tiny SFTP Server for local testing
lcServer = "127.0.0.1"
lnPort = 23
lcUsername = "tester"
lcPassword = "password"
CLEAR
? "*** wwSftpClient Test***"
loFtp = CREATEOBJECT("wwsFtpClient")
loFtp.cLogFile = "c:\temp\ftp.log" && verbose log - leave empty
loFtp.lIgnoreCertificateErrors = .T. && self-signed cert not installed
loFtp.cServer = lcServer
loFtp.nPort = lnPort
loFtp.cUsername = lcUsername
loFtp.cPassword = lcPassword
*** Optional Progress Events - clas below
loFtp.oProgressEventObject = CREATEOBJECT("SFtpClientProgressEvents")
IF !loFtp.Connect()
? loFtp.cErrorMsg
RETURN
ENDIF
? "Connected to " + lcServer
IF !loFtp.DownloadFile("SubFolder/Sail-Big.jpg", "c:\temp\Sail-Big.jpg")
? loFtp.cErrorMsg
RETURN
ENDIF
? "Downloaded " + "SubFolder/Sail-Big.jpg"
lcUploadFile = "SubFolder/Sail-Big-UPLOADED" + SYS(2015) + ".jpg"
IF !loFtp.UploadFile("c:\temp\Sail-Big.jpg", lcUploadFile)
? loFtp.cErrorMsg
RETURN
ENDIF
? "Uploaded " + lcuploadFile
*** provide a folder name (no wildcards)
loCol = loFtp.ListFiles("/SubFolder")
IF ISNULL(loCol)
? loFtp.cErrorMsg
RETURN
ENDIF
? TRANSFORM(loCol.Count ) + " matching file(s)"
? loFtp.cErrorMsg
FOR EACH loFile IN loCol FOXOBJECT
? loFile.Name
IF ( AT("Sail-Big-UPLOADED",loFile.Name) = 1)
*? loFtp.oBridge.ToJson(loFile) && for kicks print out as json
IF loFtp.DeleteFile(loFile.FullName)
? "*** Deleted " + loFile.FullName
ENDIF
ENDIF
ENDFOR
loFtp.Close()
RETURN
DEFINE class SFtpClientProgressEvents as Custom
*** You can set this to .T. to abort an upload or download
lCancelDownload = .F.
FUNCTION OnFtpBufferUpdate(lnPercent, lnDownloadedBytes, lcRemotePath, lcMode)
lcMsg = lcMode + ": " + TRANSFORM(lnPercent) + "% complete. " + lcRemotePath + " - " + TRANSFORM(lnDownloadedBytes) + " bytes"
? "*** " + lcMsg
ENDFUNC
ENDDEFINE
Remarks
Dependencies
This API uses a .NET library to provide FTP functionality.
- wwIpstuff.dll
- wwDotnetBridge.dll
- Renci.sshNet.dll
Class Members
Member | Description | |
---|---|---|
![]() |
ChangeDirectory | Changes the active directory on the FTP server. This affects how relative paths are handled. We recommend that you don't mess with this and instead use absolute server relative paths to specify file…
o.ChangeDirectory(lcFtpPath)
|
![]() |
Close | Closes the FTP connections. Also called when the wwFtpClient instance is destroyed.
o.Close()
|
![]() |
Connect | This establishes the initial connection to the server. The connection needs to stay open for any of the FTP operation commands. You should always check the return value from the connect request and…
o.Connect(lcServer, lcUsername, lcPassword)
|
![]() |
CreateDirectory | Creates a new directory on the server.
o.CreateDirectory(lcFtpPath)
|
![]() |
DeleteDirectory | Deletes a directory from the FTP server.
o.DeleteDirectory(lcFtpPath)
|
![]() |
DeleteFile | Deletes a file from the server.
o.DeleteFile(lcFile)
|
![]() |
DownloadFile | Downloads a file from the FTP server to a local file.
o.DownloadFile(lcFtpPath, lcTargetFile)
|
![]() |
ExecuteCommand | FtpCommand Function: Issue an arbitrary FTP Command Assume: Connection must exist with FtpOpen Pass: Return:
o.ExecuteCommand(lcCommand)
|
![]() |
ExecuteDownloadCommand | ExecuteDownloadCommand Function: Issue an arbitrary FTP Command Assume: Connection must exist with FtpOpen Pass: Return:
o.ExecuteDownloadCommand(lcCommand)
|
![]() |
Exists | Checks to see if a remote file exists.
o.Exists(lcRemoteFile)
|
![]() |
ListFiles | Retrieves a directory listing from the server with all files returned as a collection. The file object returned includes the following properties: FullName - full remote path Name - the file name…
o.ListFiles(lcFtpPath)
|
![]() |
RenameFile | Renames a file on the server which allows for fast copying.
o.RenameFile(lcOldName, lcNewName)
|
![]() |
UploadFile | Uploads a file to the server from a local file.
o.UploadFile(lcLocalFile, lcFtpPath)
|
![]() |
OnFtpBufferUpdate | OnFtpBufferUpdate Function: Event that fires whenever the buffer is updated by downloadfile or uploadfile. Pass: Return: lcMode: upload download |
![]() |
cErrorMsg | Error message set after a method call that fails |
![]() |
cftpserver | The FTP server to connect to |
![]() |
cftpsource | The Source file to upload from the client or download from the server. |
![]() |
cftptarget | The file to download to from the server or upload to on the server. |
![]() |
cHttpProxyByPass | |
![]() |
cHttpProxyName | |
![]() |
cHttpProxyPassword | |
![]() |
cHttpProxyPort | |
![]() |
cHttpProxyUsername | |
![]() |
cLogFile | Optional log file that receives ftp log output |
![]() |
cPassword | Password for the connection |
![]() |
cPrivateKeyFile | Optional Private key file for sign on |
![]() |
cPrivateKeyFilePassword | Optional Private key file password for sign on |
![]() |
cUsername | Username for the connection |
![]() |
lcanceldownload | Cancel flag that can be set in OnFTPBufferUpdate to let wwFTP know to stop downloading a file from the Internet. |
![]() |
lEnableProgressEvents | |
![]() |
lIgnoreCertificateErrors | Allows you to ignore certificate errors NOT RECOMMENDED: Fix your Certs! |
![]() |
lpassiveftp | Flag that sets whether to use passive FTP. |
![]() |
lUseTls | Tsl used for this request (FTPS protocol: FTP over TLS) |
![]() |
nftpworkbuffersize | |
![]() |
nPort | The port to run the FTP connection on |
![]() |
nTimeout | Connection timeout in seconds |
![]() |
oBridge | wwDotnetBridge instance |
![]() |
oFtpClient | .NET wwFtpClient instance |
![]() |
oProgressEventObject |
Assembly: wwsftpclient.prg