Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) SFTP Synchronize Tree Upload with ProgressInfo CallbacksDemonstrates an SFTP synchronization tree upload (local files to SFTP server), with progress info callbacks to monitor each file uploaded.
LOCAL loSftp LOCAL lnSuccess LOCAL lcRemoteDir LOCAL lcLocalDir LOCAL lnMode LOCAL lnRecursive * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.SFtp') loSftp = CreateObject('Chilkat.SFtp') sftpEventHandler = CreateObject("sftpEvents") EventHandler(loSftp,sftpEventHandler) lnSuccess = loSftp.Connect("my-ssh-server.com",22) IF (lnSuccess = 1) THEN lnSuccess = loSftp.AuthenticatePw("mySshLogin","mySshPassword") ENDIF IF (lnSuccess = 1) THEN lnSuccess = loSftp.InitializeSftp() ENDIF IF (lnSuccess <> 1) THEN ? loSftp.LastErrorText RELEASE loSbName RELEASE loXml RELEASE loSftp CANCEL ENDIF * Synchronize (by uploading) the local directory tree rooted at "c:/ckAssets/qa_data/syncRemote2/" * with the remote directory tree rooted at "qa/syncRemote2" * The remote directory * is relative to the HOME directory of the SSH user account. * The local directory is an absolute path (but could be a relative path if desired) lcRemoteDir = "qa/syncRemote2" lcLocalDir = "c:/ckAssets/qa_data/syncRemote2/" * Possible modes that can be passed to the SyncTreeUpload method are: * mode=0: Upload all files * mode=1: Upload all files that do not exist on the server. * mode=2: Upload newer or non-existant files. * mode=3: Upload only newer files. If a file does not already exist on the server, it is not uploaded. * mode=4: transfer missing files or files with size differences. * mode=5: same as mode 4, but also newer files. * Because we want to see the ProgressInfo callbacks, upload all files.. lnMode = 0 * This example turns on recursion to synchronize the entire tree. * Recursion can be turned off to synchronize the files of a single directory. lnRecursive = 1 lnSuccess = loSftp.SyncTreeUpload(lcLocalDir,lcRemoteDir,lnMode,lnRecursive) IF (lnSuccess <> 1) THEN ? loSftp.LastErrorText RELEASE loSbName RELEASE loXml RELEASE loSftp CANCEL ENDIF ? "Success." * Here is sample output of the above code showing the ProgressInfo values. * If the name is "syncUploadFile", then the value is a snippet of XML containing the local file path and the remote file path of the file * being uploaded. * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\accentedLatin1.txt" remotePath="qa/syncRemote2/accentedLatin1.txt" /> * ProgressInfo: SendByteCount, 52 * ProgressInfo: SendBytesPerSec, 52000 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\accentedUtf8.txt" remotePath="qa/syncRemote2/accentedUtf8.txt" /> * ProgressInfo: SendByteCount, 226 * ProgressInfo: SendBytesPerSec, 226000 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\anter_cert.pem" remotePath="qa/syncRemote2/anter_cert.pem" /> * ProgressInfo: SendByteCount, 2165 * ProgressInfo: SendBytesPerSec, 2165000 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\mv.exe" remotePath="qa/syncRemote2/mv.exe" /> * ProgressInfo: SendByteCount, 9922165 * ProgressInfo: SendBytesPerSec, 24438830 * ProgressInfo: SendByteCount, 20898165 * ProgressInfo: SendBytesPerSec, 25705000 * ProgressInfo: SendByteCount, 31554165 * ProgressInfo: SendBytesPerSec, 25885287 * ProgressInfo: SendByteCount, 42242165 * ProgressInfo: SendBytesPerSec, 25995178 * ProgressInfo: SendByteCount, 48066165 * ProgressInfo: SendBytesPerSec, 23666255 * ProgressInfo: SendByteCount, 50821629 * ProgressInfo: SendBytesPerSec, 23916060 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\abc\chiliPepper.gif" remotePath="qa/syncRemote2/abc/chiliPepper.gif" /> * ProgressInfo: SendByteCount, 50829347 * ProgressInfo: SendBytesPerSec, 23919692 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\chiliPepper.gif" remotePath="qa/syncRemote2/data/chiliPepper.gif" /> * ProgressInfo: SendByteCount, 50837065 * ProgressInfo: SendBytesPerSec, 23923324 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\dkimHtmlBody.txt" remotePath="qa/syncRemote2/data/xyz/dkimHtmlBody.txt" /> * ProgressInfo: SendByteCount, 50837250 * ProgressInfo: SendBytesPerSec, 23923411 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\dkimVerifyTest.eml" remotePath="qa/syncRemote2/data/xyz/dkimVerifyTest.eml" /> * ProgressInfo: SendByteCount, 50840884 * ProgressInfo: SendBytesPerSec, 23925121 * ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\emailForCreateDsn.eml" remotePath="qa/syncRemote2/data/xyz/emailForCreateDsn.eml" /> * ProgressInfo: SendByteCount, 50845086 * ProgressInfo: SendBytesPerSec, 23927099 RELEASE loSbName RELEASE loXml RELEASE loSftp DEFINE CLASS sftpEvents AS SESSION OLEPUBLIC IMPLEMENTS _IChilkatSFtpEvents IN "Chilkat.SFtp" PROCEDURE _IChilkatSFtpEvents_AbortCheck(abort As Number) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_BinaryData(data As Variant) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_DownloadRate(byteCount As Number, bytesPerSec As Number) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_PercentDone(pctDone As Number, abort As Number) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_ProgressInfo(name As String, value As String) * Application code goes here... ? "ProgressInfo: " + name + ", " + value * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbName = CreateObject('Chilkat.StringBuilder') loSbName.Append(name) IF (loSbName.ContentsEqual("syncUploadFile") = 1) THEN * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXml = CreateObject('Chilkat.Xml') loXml.LoadXml(value) lcFile_localPath = loXml.GetAttrValue("localPath") lcFile_remotePath = loXml.GetAttrValue("remotePath") ENDIF ENDPROC PROCEDURE _IChilkatSFtpEvents_TaskCompleted(task As Generic) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_TextData(data As String) * Application code goes here... ENDPROC PROCEDURE _IChilkatSFtpEvents_UploadRate(byteCount As Number, bytesPerSec As Number) * Application code goes here... ENDPROC ENDDEFINE |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.