public event EventHandler<TEventArgs> TransferConfirm
Shows how to use Download method to download files and directories on an FTP server. The download process is controlled with handlers of the TransferConfirm and Progress events.
using System; using ComponentPro.IO; using ComponentPro.Net; ... private static Ftp _client; static void Main() { // Create a new class instance. Ftp client = new Ftp(); _client = client; // Connect to the FTP server. client.Connect("demo.componentpro.com"); // Authenticate. client.Authenticate("test", "test"); // ... client.TransferConfirm += client_TransferConfirm; client.Progress += client_Progress; try { TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm); // Get all directories, subdirectories, and files in remote folder '/myfolder' to 'c:\myfolder'. client.Download("/myfolder", "c:\\myfolder", opt); } catch (Exception exc) { Console.WriteLine("Error: " + exc.Message); } // ... // Disconnect. client.Disconnect(); } /// <summary> /// This method is raised when user clicks on 'Cancel' button on the form. /// </summary> protected static void btnCancel_Click(object sender, EventArgs e) { // Cancel the download operation when user clicks on the button. _client.Cancel(); } static void client_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e) { // Show progress info. Console.WriteLine("Current File: %{0} completed", e.Percentage); Console.WriteLine("Total: %{0} completed", e.TotalPercentage); switch (e.State) { case TransferState.StartDownloadingFile: if (e.SourcePath.EndsWith(".exe")) { // Skip all .exe files e.Skip = true; } else if (e.SourcePath.StartsWith("/MyFolder")) { // Change the source file path if it starts with "/MyFolder" e.SourcePath = e.SourcePath.Replace("/MyFolder", "/MySecondFolder"); } break; } } static void client_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e) { if (e.Exception != null) Console.WriteLine("Error: " + e.Exception.Message); if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists) { // Skip the existing file. e.NextAction = TransferConfirmNextActions.Skip; } Console.Write("Do you want to (r)etry or (s)kip?"); string key = Console.ReadLine(); if (key == "r") e.NextAction = TransferConfirmNextActions.Retry; else if (key == "s") e.NextAction = TransferConfirmNextActions.Skip; else // Cancel the operation. e.NextAction = TransferConfirmNextActions.Cancel; }
Shows how to use Upload methods to upload files. The system will skip existing files on the server.
using System; using ComponentPro.IO; using ComponentPro.Net; ... public void DoUpload() { // Create a new class instance. Sftp client = new Sftp(); // Connect to the SFTP server. client.Connect("demo.componentpro.com"); // Authenticate. client.Authenticate("test", "test"); // ... client.TransferConfirm += client_TransferConfirm; client.Progress += client_Progress; try { TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm); // Get all directories, subdirectories, and files in local folder 'c:\myfolder' to remote folder '/myfolder'. client.Upload("c:\\myfolder", "/myfolder", opt); } catch (Exception exc) { Console.WriteLine("Error: " + exc.Message); } // ... // Disconnect. client.Disconnect(); } void client_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e) { // Show progress info. Console.WriteLine("Current File: %{0} completed", e.Percentage); Console.WriteLine("Total: %{0} completed", e.TotalPercentage); switch (e.State) { case TransferState.StartUploadingFile: if (e.SourcePath.EndsWith(".exe")) { // Skip all .exe files e.Skip = true; } else if (e.SourcePath.StartsWith(@"C:\MyFolder")) { // Change the source file path if it starts with "C:\MyFolder" e.SourcePath = e.SourcePath.Replace(@"C:\MyFolder", @"C:\MySecondFolder"); } break; } } void client_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e) { if (e.Exception != null) Console.WriteLine("Error: " + e.Exception.Message); if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists) { // Skip the existing file. e.NextAction = TransferConfirmNextActions.Skip; } Console.Write("Do you want to (r)etry or (s)kip?"); string key = Console.ReadLine(); if (key == "r") e.NextAction = TransferConfirmNextActions.Retry; else if (key == "s") e.NextAction = TransferConfirmNextActions.Skip; else // Cancel the operation. e.NextAction = TransferConfirmNextActions.Cancel; }
Shows how to use ExtractFiles method to extract files and directories from an archive. The extraction process is controlled with handlers of the TransferConfirm and Progress events.
using System; using ComponentPro.IO; using ComponentPro.Compression; ... private Zip _zip; public void DoDownload() { // Create a new instance. Zip zip = new Zip(); _zip = zip; zip.Open("test.zip"); // ... zip.TransferConfirm += zip_TransferConfirm; zip.Progress += zip_Progress; try { TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm); // Get all directories, subdirectories, and files in archive folder '/myfolder' to 'c:\myfolder'. zip.ExtractFiles("/myfolder", "c:\\myfolder", opt); } catch (Exception exc) { Console.WriteLine("Error: " + exc.Message); } // ... // Close. zip.Close(); } /// <summary> /// This method is raised when user clicks on 'Cancel' button on the form. /// </summary> protected void btnCancel_Click(object sender, EventArgs e) { // Cancel the download operation when user clicks on the button. _zip.Cancel(); } void zip_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e) { // Show progress info. Console.WriteLine("Current File: %{0} completed", e.Percentage); Console.WriteLine("Total: %{0} completed", e.TotalPercentage); switch (e.State) { case TransferState.StartDownloadingFile: if (e.SourcePath.EndsWith(".exe")) { // Skip all .exe files e.Skip = true; } else if (e.SourcePath.StartsWith("/MyFolder")) { // Change the source file path if it starts with "/MyFolder" e.SourcePath = e.SourcePath.Replace("/MyFolder", "/MySecondFolder"); } break; } } void zip_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e) { if (e.Exception != null) Console.WriteLine("Error: " + e.Exception.Message); if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists) { // Skip the existing file. e.NextAction = TransferConfirmNextActions.Skip; } Console.Write("Do you want to (r)etry or (s)kip?"); string key = Console.ReadLine(); if (key == "r") e.NextAction = TransferConfirmNextActions.Retry; else if (key == "s") e.NextAction = TransferConfirmNextActions.Skip; else // Cancel the operation. e.NextAction = TransferConfirmNextActions.Cancel; }