Sample code for 30+ languages & platforms
Lua

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 Lua Downloads

Lua
local chilkat = require("chilkat")

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

local ftp = chilkat.Ftp2.new()

-- Set the various properties to establish the connection.
ftp.hostname = "ftp.example.com"
ftp.username = "login"
ftp.password = "password"

-- If SSL/TLS is required..
-- See http://www.cknotes.com/determining-ftp2-connection-settings/
-- for more information.
ftp.auth_tls = true
ftp.passive_use_host_addr = true

-- Connect to the FTP server:
local success = ftp:connect_only()
if not success then
    print(ftp.last_error_text)
    return
end

-- Authenticate with the FTP server.
success = ftp:login_after_connect_only()
if not success then
    print(ftp.last_error_text)
    return
end

-- To get file permissions in UNIX format, disallow MSLD:
ftp.allow_mlsd = false

-- To get file and sub-directory information, simply
-- loop from 0 to ftp.GetDirCount() - 1
local i = 0
local n = ftp:get_dir_count()
if n < 0 then
    print(ftp.last_error_text)
    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 then
    print("The permissions format is: " .. ftp:get_perm_type(0))
end

while i < n do
    -- Display the permissions and filename
    print(ftp:get_permissions(i) .. " " .. ftp:get_filename(i))

    i = i + 1
end

-- Assuming MLSD was possible, let's see the file permissions in MLSD format:
ftp.allow_mlsd = true

-- Clear the directory cache so we're forced to re-fetch the directory listing:
ftp:clear_dir_cache()

n = ftp:get_dir_count()
if n < 0 then
    print(ftp.last_error_text)
    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 then
    print("----")
    print("The permissions format is: " .. ftp:get_perm_type(0))
end

i = 0
while i < n do
    -- Display the permissions and filename
    print(ftp:get_permissions(i) .. " " .. ftp:get_filename(i))

    i = i + 1
end

success = ftp:disconnect()