Lua
Lua
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 Lua Downloads
local chilkat = require("chilkat")
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local sftp = chilkat.SFtp.new()
-- Set some timeouts, in milliseconds:
sftp.connect_timeout_ms = 5000
sftp.idle_timeout_ms = 10000
-- Connect to the SSH server.
-- The standard SSH port = 22
-- The hostname may be a hostname or IP address.
local hostname = "sftp.example.com"
local port = 22
local success = sftp:connect(hostname, port)
if not success then
print(sftp.last_error_text)
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.
success = sftp:authenticate_pw("myLogin", "myPassword")
if not success then
print(sftp.last_error_text)
return
end
-- After authenticating, the SFTP subsystem must be initialized:
success = sftp:initialize_sftp()
if not success then
print(sftp.last_error_text)
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.
local bFollowLinks = true
local bIsHandle = false
local fileSize = sftp:get_file_size32("someDir/someFile.dat", bFollowLinks, bIsHandle)
if fileSize < 0 then
print(sftp.last_error_text)
return
end
print("file size = " .. fileSize)
-- 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.
local fileSizeStr = sftp:get_file_size_str("someDir/someFile.dat", bFollowLinks, bIsHandle)
if not sftp.last_method_success then
print(sftp.last_error_text)
return
end
print("file size = " .. fileSizeStr)
-- You can alternatively get the size with an open file handle.
local handle = sftp:open_file("someDir/someFile.dat", "readOnly", "openExisting")
if not sftp.last_method_success then
print(sftp.last_error_text)
return
end
-- Get the size using the handle.
bIsHandle = true
fileSize = sftp:get_file_size32("someDir/someFile.dat", bFollowLinks, bIsHandle)
if fileSize < 0 then
print(sftp.last_error_text)
return
end
print("file size = " .. fileSize)
-- -----------------------------------------------------------------------------
-- 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.
success = sftp:close_handle(handle)
if not success then
print(sftp.last_error_text)
return
end