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
(C#) 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.
// ProgressInfo callback method. void sftp_OnProgressInfo(object sender, Chilkat.ProgressInfoEventArgs args) { string name = args.Name; string value = args.Value; Debug.WriteLine("ProgressInfo: " + name + ", " + value); Chilkat.StringBuilder sbName = new Chilkat.StringBuilder(); sbName.Append(name); if (sbName.ContentsEqual("syncUploadFile") == true) { Chilkat.Xml xml = new Chilkat.Xml(); xml.LoadXml(value); string file_localPath = xml.GetAttrValue("localPath"); string file_remotePath = xml.GetAttrValue("remotePath"); } } private void ChilkatExample() { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Chilkat.SFtp sftp = new Chilkat.SFtp(); sftp.OnProgressInfo += sftp_OnProgressInfo; bool success = sftp.Connect("my-ssh-server.com",22); if (success == true) { success = sftp.AuthenticatePw("mySshLogin","mySshPassword"); } if (success == true) { success = sftp.InitializeSftp(); } if (success != true) { Debug.WriteLine(sftp.LastErrorText); return; } // 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) string remoteDir = "qa/syncRemote2"; string localDir = "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.. int mode = 0; // This example turns on recursion to synchronize the entire tree. // Recursion can be turned off to synchronize the files of a single directory. bool recursive = true; success = sftp.SyncTreeUpload(localDir,remoteDir,mode,recursive); if (success != true) { Debug.WriteLine(sftp.LastErrorText); return; } Debug.WriteLine("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 } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.