Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loFtp
LOCAL i
LOCAL n

lnSuccess = 0

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

loFtp = CreateObject('Chilkat.Ftp2')

* Set the various properties to establish the connection.
loFtp.Hostname = "ftp.example.com"
loFtp.Username = "login"
loFtp.Password = "password"

* If SSL/TLS is required..
* See http://www.cknotes.com/determining-ftp2-connection-settings/ 
* for more information.
loFtp.AuthTls = 1
loFtp.PassiveUseHostAddr = 1

* Connect to the FTP server:
lnSuccess = loFtp.ConnectOnly()
IF (lnSuccess <> 1) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

* Authenticate with the FTP server.
lnSuccess = loFtp.LoginAfterConnectOnly()
IF (lnSuccess <> 1) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

* To get file permissions in UNIX format, disallow MSLD:
loFtp.AllowMlsd = 0

* To get file and sub-directory information, simply
* loop from 0 to ftp.GetDirCount() - 1
i = 0
n = loFtp.GetDirCount()
IF (n < 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

* 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) THEN
    ? "The permissions format is: " + loFtp.GetPermType(0)
ENDIF

DO WHILE i < n

    * Display the permissions and filename
    ? loFtp.GetPermissions(i) + " " + loFtp.GetFilename(i)

    i = i + 1
ENDDO

* Assuming MLSD was possible, let's see the file permissions in MLSD format:
loFtp.AllowMlsd = 1

* Clear the directory cache so we're forced to re-fetch the directory listing:
loFtp.ClearDirCache()

n = loFtp.GetDirCount()
IF (n < 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

* 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) THEN
    ? "----"
    ? "The permissions format is: " + loFtp.GetPermType(0)
ENDIF

i = 0
DO WHILE i < n

    * Display the permissions and filename
    ? loFtp.GetPermissions(i) + " " + loFtp.GetFilename(i)

    i = i + 1
ENDDO

lnSuccess = loFtp.Disconnect()

RELEASE loFtp