Sample code for 30+ languages & platforms
DataFlex

Get FTP File Permissions

See more FTP Examples

_LANGUAGE_ example showing how to retrieve file permissions (via FTP) for each file in a remote directory.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoFtp
    Integer i
    Integer n
    String sTemp1
    String sTemp2

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatFtp2)) To hoFtp
    If (Not(IsComObjectCreated(hoFtp))) Begin
        Send CreateComObject of hoFtp
    End

    // Set the various properties to establish the connection.
    Set ComHostname Of hoFtp To "ftp.example.com"
    Set ComUsername Of hoFtp To "login"
    Set ComPassword Of hoFtp To "password"

    // If SSL/TLS is required..
    // See http://www.cknotes.com/determining-ftp2-connection-settings/ 
    // for more information.
    Set ComAuthTls Of hoFtp To True
    Set ComPassiveUseHostAddr Of hoFtp To True

    // Connect to the FTP server:
    Get ComConnectOnly Of hoFtp To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoFtp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Authenticate with the FTP server.
    Get ComLoginAfterConnectOnly Of hoFtp To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoFtp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // To get file permissions in UNIX format, disallow MSLD:
    Set ComAllowMlsd Of hoFtp To False

    // To get file and sub-directory information, simply
    // loop from 0 to ftp.GetDirCount() - 1
    Move 0 To i
    Get ComGetDirCount Of hoFtp To n
    If (n < 0) Begin
        Get ComLastErrorText Of hoFtp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Show the type of permissions information that is available.
    // The two most common types are "mlsd" and "unix".  See the
    // online reference documentation for more information.
    If (n > 0) Begin
        Get ComGetPermType Of hoFtp 0 To sTemp1
        Showln "The permissions format is: " sTemp1
    End

    While (i < n)

        // Display the permissions and filename
        Get ComGetPermissions Of hoFtp i To sTemp1
        Get ComGetFilename Of hoFtp i To sTemp2
        Showln sTemp1 " " sTemp2

        Move (i + 1) To i
    Loop

    // Assuming MLSD was possible, let's see the file permissions in MLSD format:
    Set ComAllowMlsd Of hoFtp To True

    // Clear the directory cache so we're forced to re-fetch the directory listing:
    Send ComClearDirCache To hoFtp

    Get ComGetDirCount Of hoFtp To n
    If (n < 0) Begin
        Get ComLastErrorText Of hoFtp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Show the type of permissions information that is available.
    // The two most common types are "mlsd" and "unix".  See the
    // online reference documentation for more information.
    If (n > 0) Begin
        Showln "----"
        Get ComGetPermType Of hoFtp 0 To sTemp1
        Showln "The permissions format is: " sTemp1
    End

    Move 0 To i
    While (i < n)

        // Display the permissions and filename
        Get ComGetPermissions Of hoFtp i To sTemp1
        Get ComGetFilename Of hoFtp i To sTemp2
        Showln sTemp1 " " sTemp2

        Move (i + 1) To i
    Loop

    Get ComDisconnect Of hoFtp To iSuccess


End_Procedure