Xceed .NET Libraries Documentation
Xceed.Ftp Assembly / Xceed.Ftp Namespace / FtpClient Class / FileTransferStatus Event
Example


In This Topic
    FileTransferStatus Event
    In This Topic
    Raised for every 4Kb sent or received during a file transfer.
    Syntax
    'Declaration
     
    Public Event FileTransferStatus As FileTransferStatusEventHandler
    'Usage
     
    Dim instance As FtpClient
    Dim handler As FileTransferStatusEventHandler
     
    AddHandler instance.FileTransferStatus, handler
    public event FileTransferStatusEventHandler FileTransferStatus
    Event Data

    The event handler receives an argument of type FileTransferStatusEventArgs containing data related to this event. The following FileTransferStatusEventArgs properties provide information specific to this event.

    PropertyDescription
    Gets the percentage of the bytes that have been transferred for the entire group of files to transfer.  
    Gets the average throughput for the entire group of files being transferred, in bytes per second.  
    Gets the total amount of bytes that were skipped so far for the group of files being transferred.  
    Gets the total amount of bytes of all files that will be transferred.  
    Gets the total amount of bytes transferred so far for the group of files being transferred.  
    Gets the percentage of bytes transferred for the current file.  
    Gets the current file's average throughput in bytes per second.  
    Gets the amount of bytes that were skipped for the current file.  
    Gets the total amount of bytes for the current file.  
    Gets the amount of bytes transferred for the current file.  
    Gets the percentage of files that have been transferred so far.  
    Gets the total number of files skipped so far.  
    Gets the total number of files to transfer.  
    Gets the total number of files transferred so far.  
    Gets the path and filename of the local file.  
    Gets the filename of the remote file.  
    Remarks

    When receiving files with the ReceiveFile method, some FTP servers will not provide the size of the file currently being received and therefore, some values of the FileTransferStatusEventArgs will be 0. If you require these particular statistics, you can use the ReceiveMultipleFiles method instead of the ReceiveFile method. The ReceiveMultipleFiles method requests a complete listing from the FTP server before receiving any files. The FTP client therefore obtains the file sizes of each file being received and can then provide these statistics during the FileTransferStatus event. If you use this technique, keep in mind that the receive operation will be slightly slower (due to the extra listing operation) and that it will not be possible to change the local filename of the file.

    Example
    The following example demonstrates how to use the FileTransferStatus event to display progress information during a multiple-file transfer. This example assumes that you are in a Windows application and that the form contains 2 labels and 2 progress bars.
    Xceed.Ftp.Licenser.LicenseKey = "FTNXX-XXXXX-XXXXX-XXXX" ' Set license key here to deploy 
    
    Dim ftp As New FtpClient()
    
    ' Subscribe to the FileTransferStatus event.
    AddHandler ftp.FileTransferStatus, AddressOf Me.file_transfer
    
    ftp.Connect( "localhost" )
    ftp.Login()
    
    ftp.ReceiveMultipleFiles( "ClientFiles\*", "d:\", True, True )
    
    ftp.Disconnect()
    
    Private Sub file_transfer( ByVal sender As Object, ByVal e As FileTransferStatusEventArgs )
    
      If e.BytesTransferred = 0 Then
        label2.Text = "Receiving file " + e.LocalFilename
        label1.Text = "Receiving file #" + e.FilesTransferred.ToString() + " of " + e.FilesTotal.ToString()
      
        label1.Refresh()
        label2.Refresh()
      End If
      
      progressBar2.Value = e.BytesPercent
      progressBar1.Value = e.AllBytesPercent
    End Sub
    Xceed.Ftp.Licenser.LicenseKey = "FTNXX-XXXXX-XXXXX-XXXX" // Set license key here to deploy 
    
    FtpClient ftp = new FtpClient();
    
    // Subscribe to the FileTransferStatus event.
    ftp.FileTransferStatus += new FileTransferStatusEventHandler( this.file_transfer );
    
    ftp.Connect( "localhost" );
    ftp.Login();
    
    ftp.ReceiveMultipleFiles( @"ClientFiles\*", @"d:\", true, true );
    
    ftp.Disconnect();
    
    private void file_transfer( object sender, FileTransferStatusEventArgs e )
    {
      if( e.BytesTransferred == 0 )
      {
        label2.Text = "Receiving file " + e.LocalFilename;
        label1.Text = "Receiving file #" + e.FilesTransferred.ToString() + " of " + e.FilesTotal.ToString();
      
        label1.Refresh();
        label2.Refresh();
      }
      
      progressBar2.Value = e.BytesPercent;      
      progressBar1.Value = e.AllBytesPercent;      
    }
    Requirements

    Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

    See Also