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
(Objective-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.
// This is the interface header sftpProgress.h #import "CkoSFtpProgress.h" @interface sftpProgress : CkoSFtpProgress { } - (void)ProgressInfo:(NSString *)pinfName value:(NSString *)pinfValue; @end // ---------------------------------------------------- #import <sftpProgress.h> @implementation sftpProgress - (void)ProgressInfo:(NSString *)pinfName value:(NSString *)pinfValue { NSLog(@"%@%@%@%@",@"ProgressInfo: ",pinfName,@", ",pinfValue); CkoStringBuilder *sbName = [[CkoStringBuilder alloc] init]; [sbName Append: pinfName]; if ([sbName ContentsEqual: @"syncUploadFile"] == YES) { CkoXml *xml = [[CkoXml alloc] init]; [xml LoadXml: pinfValue]; NSString *file_localPath = [xml GetAttrValue: @"localPath"]; NSString *file_remotePath = [xml GetAttrValue: @"remotePath"]; } } @end // ---------------------------------------------------- #import <CkoStringBuilder.h> #import <CkoXml.h> #import <NSString.h> #import <CkoSFtp.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoSFtp *sftp = [[CkoSFtp alloc] init]; sftpProgress *sftp_progress = [[sftpProgress alloc] init]; [sftp setEventCallbackObject: sftp_progress]; BOOL success = [sftp Connect: @"my-ssh-server.com" port: [NSNumber numberWithInt: 22]]; if (success == YES) { success = [sftp AuthenticatePw: @"mySshLogin" password: @"mySshPassword"]; } if (success == YES) { success = [sftp InitializeSftp]; } if (success != YES) { NSLog(@"%@",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) NSString *remoteDir = @"qa/syncRemote2"; NSString *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 = YES; success = [sftp SyncTreeUpload: localDir remoteBaseDir: remoteDir mode: [NSNumber numberWithInt: mode] bRecurse: recursive]; if (success != YES) { NSLog(@"%@",sftp.LastErrorText); return; } NSLog(@"%@",@"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.