Sample code for 30+ languages & platforms
DataFlex

SFTP Get Size of File on Server

See more SFTP Examples

Demonstrates how to get the size of an existing file on the server.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSftp
    String sHostname
    Integer iPort
    Boolean iBFollowLinks
    Boolean iBIsHandle
    Integer iFileSize
    String sFileSizeStr
    String sHandle
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatSFtp)) To hoSftp
    If (Not(IsComObjectCreated(hoSftp))) Begin
        Send CreateComObject of hoSftp
    End

    // Set some timeouts, in milliseconds:
    Set ComConnectTimeoutMs Of hoSftp To 5000
    Set ComIdleTimeoutMs Of hoSftp To 10000

    // Connect to the SSH server.  
    // The standard SSH port = 22
    // The hostname may be a hostname or IP address.
    Move "sftp.example.com" To sHostname
    Move 22 To iPort
    Get ComConnect Of hoSftp sHostname iPort To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Authenticate with the SSH server.  Chilkat SFTP supports
    // both password-based authenication as well as public-key
    // authentication.  This example uses password authenication.
    Get ComAuthenticatePw Of hoSftp "myLogin" "myPassword" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // After authenticating, the SFTP subsystem must be initialized:
    Get ComInitializeSftp Of hoSftp To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Assuming we know the file size won't be too large, we get the size as a 32-bit integer.
    // For SFTP, the remote file path is always either a path relative to the HOME directory of the user account, or an absolute path on the server.
    Move True To iBFollowLinks
    Move False To iBIsHandle
    Get ComGetFileSize32 Of hoSftp "someDir/someFile.dat" iBFollowLinks iBIsHandle To iFileSize
    If (iFileSize < 0) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "file size = " iFileSize

    // If the file size might be too large for a 32-bit signed integer, then get the size as a decimal string.
    // You can convert the string to a 64-bit integer in your programming language.
    Get ComGetFileSizeStr Of hoSftp "someDir/someFile.dat" iBFollowLinks iBIsHandle To sFileSizeStr
    Get ComLastMethodSuccess Of hoSftp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "file size = " sFileSizeStr

    // You can alternatively get the size with an open file handle.
    Get ComOpenFile Of hoSftp "someDir/someFile.dat" "readOnly" "openExisting" To sHandle
    Get ComLastMethodSuccess Of hoSftp To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Get the size using the handle.
    Move True To iBIsHandle
    Get ComGetFileSize32 Of hoSftp "someDir/someFile.dat" iBFollowLinks iBIsHandle To iFileSize
    If (iFileSize < 0) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "file size = " iFileSize

    // -----------------------------------------------------------------------------
    // Don't forget to close the file handle.
    // Otherwise open handles will accumulate on the server until eventually a limit
    // is reached and the server will fail on a call to OpenFile.
    // -----------------------------------------------------------------------------

    // Close the file.
    Get ComCloseHandle Of hoSftp sHandle To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End



End_Procedure