ComponentPro UltimateSftp

      UploadAsync(FileSystem, String, Boolean, IEnumerable, String, TransferOptions) Method

      See AlsoMembers Options: Show AllLanguage Filter: AllSend comments on this topic to ComponentPro
      Asynchronously uploads files from the specified source directory on the specified source file system that match the search condition specified in the options parameter to the specified remote directory.

      Syntax

      public ExtendedAsyncResult<FileSystemTransferStatistics> UploadAsync(
         FileSystem sourceFileSystem, 
         string sourceDirectoryPath, 
         bool includeBaseDirectory, 
         IEnumerable sourceFilesToTransfer, 
         string remotePath, 
         TransferOptions options
      )

      Parameters

      sourceFileSystem
      The source file system containing files to upload.
      sourceDirectoryPath
      The path and name of the directory on the source file system where the files will be uploaded to the server. When the parameter sourceFilesToTransfer is a null reference, this parameter can include filtering masks to limit the files that are uploaded. For example, if ""(empty string) is specified, the entire contents of the current folder will be uploaded. If "*.txt" is used, all the files in the current folder that have the .TXT extension will be uploaded. If "/mydir/*.dat;*.cs,*.vb" is used (masks are delimited by ',', ';', and '|' characters), files with the DAT, CS, or VB extension in "/mydir" will be uploaded. If no masks specified, the whole content of the local directory should be uploaded. The final search condition depends on the SearchCondition and SearchConditionCombinedWithMasksInSourcePath settings of the options parameter. Attention: some servers may be case-sensitive!
      includeBaseDirectory
      Indicates whether the containing directory should also be created in the destination directory. For example: UploadAsync(zipSystem, "MyDir/*.txt", true, null, "/RemoteDir" ...) - if this parameter is true, "MyDir" is created in "RemoteDir" and all files and dirs within "MyDir" are copied to "RemoteDir/MyDir"; otherwise false, "MyDir" is not created in "RemoteDir", only files and subdirectories within "MyDir" are copied to "RemoteDir".
      sourceFilesToTransfer
      The list of files and directories to upload, or a null reference to upload files in the sourceDirectoryPath that match the search condition specified in the options parameter. This can contain String and FileInfoBase objects. (e.g. UploadAsync(zipFileSystem, "", false, new string[] {@"/file1", @"/folder/file2", @"dir1" }, ...) or UploadAsync(zipFileSystem, "", false, new object[] {@"/temp/file1", fileInfo1, fileInfo2 }, ...))
      remotePath
      The path of the remote directory to store uploaded files.
      options
      The transfer options object which provides many settings to control the file transfer process.

      Return Value

      An asynchronous reference to a FileSystemTransferStatistics object that contains transfer statictics and a list of processed files and directories.

      Examples

      Shows how to use UploadAsync method to asynchronously upload files (Task-based approach).

      using System;
      using ComponentPro.IO;
      using ComponentPro.Net;
      using ComponentPro;
      
      ...
      
      static async void Main2()
      {
          // Create a new class instance. 
          Sftp client = new Sftp();
      
          // Connect to the SFTP server. 
          client.Connect("localhost");
      
          // Authenticate. 
          client.Authenticate("test", "test");
      
          // ... 
       
          // The UploadCompleted event is raised when the operation completes. 
          client.UploadCompleted += callback2;
      
          // Create the 2nd Sftp instance. 
          Sftp secondSftpClient = new Sftp();
          // Connect and login to the 2nd server. 
          secondSftpClient.Connect("2ndserver");
          secondSftpClient.Authenticate("user", "pass");
      
          // Upload all files and subdirectories in remote folder '/data' on the 2nd SFTP server to the remote dir '/temp' on the 1st SFTP server 
          await client.UploadAsync(secondSftpClient, "/data", false, null, "/temp", new TransferOptions(), "user state");
      
          // ... 
       
          // Close the 2nd connection. 
          secondSftpClient.Disconnect();
      
          // ... 
       
          // Disconnect. 
          client.Disconnect();
      }
      
      static void callback2(object sender, ExtendedAsyncCompletedEventArgs<FileSystemTransferStatistics> e)
      {
          // Sftp client = (Sftp)sender; 
          if (e.Error != null)
              Console.WriteLine("Error: " + e.Error.Message);
          else 
          {
              Console.WriteLine("Files uploaded: " + e.Result.FilesProcessed);
          }
      }

      Shows how to use UploadAsync method to asynchronously upload files (Event-based approach).

      using System;
      using ComponentPro.IO;
      using ComponentPro.Net;
      using ComponentPro;
      
      ...
      
      static void Main()
      {
          // Create a new class instance. 
          Sftp client = new Sftp();
      
          // Connect to the SFTP server. 
          client.Connect("localhost");
      
          // Authenticate. 
          client.Authenticate("test", "test");
      
          // ... 
       
          // Register an event handler. 
          client.UploadCompleted += client_UploadCompleted;
      
          // Create the 2nd Sftp instance. 
          Sftp secondSftpClient = new Sftp();
          // Connect and login to the 2nd server. 
          secondSftpClient.Connect("2ndserver");
          secondSftpClient.Authenticate("user", "pass");
      
          // Upload all files and subdirectories in remote folder '/data' on the 2nd SFTP server to the remote dir '/temp' on the 1st SFTP server 
          client.UploadAsync(secondSftpClient, "/data", false, null, "/temp", new TransferOptions());
      
          // TODO: Wait until the operation completes. 
          // ... 
       
          // Close the 2nd connection. 
          secondSftpClient.Disconnect();
      
          // Disconnect. 
          client.Disconnect();
      }
      
      static void client_UploadCompleted(object sender, ExtendedAsyncCompletedEventArgs<FileSystemTransferStatistics> e)
      {
          // Sftp client = (Sftp)sender; 
          if (e.Error != null)
              Console.WriteLine("Error: " + e.Error.Message);
          else 
          {
              Console.WriteLine("Files uploaded: " + e.Result.FilesProcessed);
          }
      }

      Framework

      .NET Compact Framework.NET Compact Framework

      Supported version: 2.0, 3.5, and 3.9
      Assembly: ComponentPro.Sftp.CF (in ComponentPro.Sftp.CF.dll)

      .NET Framework.NET Framework

      Supported version: 2.0, 3.0, 3.5, 4.0, 4.5.x, 4.6.x and later
      Assembly: ComponentPro.Sftp (in ComponentPro.Sftp.dll)

      See Also