FTPWI.GetFileSize

number FTPWI.GetFileSize ( string URL,
string Username = "anonymous",
string Password = "guest@",
number Mode = MODE_BINARY,
number Timeout = 20,
number Port = 21,
boolean PassiveMode = true,
boolean CallbackFunction = nil )
Примеры

Описание

Получает размер файла (в байтах), размещенного на сайте FTP.

Параметры

URL

(строка) Полный ftp адрес к файлу, чей размер нужен. Например, ftp://ftp.myftpsite.com/updates/myfile.txt.

Username

(строка) Имя для входа на FTP сайт. По умолчанию для анонимного FTP это "anonymous".

Password

(строка) Пароль для доступа к FTP сайту, что идет совместно с параметром FTP Username. Для анонимного FTP, используется ваш адрес электронной почты или пароль по умолчанию "guest<".

Mode

(число) Используемый режим для обращения к файлу. Выбор из:

КОНСТАНТА
CONSTANT
ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
MODE_BINARY0Сохранение файла в точности как загружено. (По умолчанию)
MODE_TEXT1Конвертировать файл из текстового режима Unix в Windows текстовый режим, если необходимо.

Примечание: Этот параметр в основном представлен для согласования между действиями FTPWI.

Timeout

(число) Максимальное время в секундах, в течении которого действие будет ожидать ответа после попытки соединения. Значение по умолчанию равно 20 секундам.

Примечание: Значения тайм-аута интерпретируются различными способами во время связи клиента с сервером. В результате фактический тайм-аут, используемый соединением, может отличаться от указанного значения.

Port

(число) Порт для подключения. В большинстве случаев значение по умолчанию (порт 21) является стандартным для FTP.

PassiveMode

(логический) Использование пассивного/брандмауэр режима при загрузке файла. Пассивный режим (также известный как "режим брандмауэра") требуется всякий раз, когда нужна передача файлов на FTP сервер или от FTP сервера из-за брандмауэра. Прохождение значения по умолчанию истина - true включает пассивный режим, а ложь - false отключает его. Обычно, ваш компьютер делает соединение с FTP сервером, а FTP сервер отвечает открытием соединения обратно с вашим компьютером. Это возвращение соединения не будет работать если ваш компьютер не будет доступен напрямую из Интернета. В пассивном режиме, оба соединения делаются из вашего компьютера, так что FTP серверу не нужно делать никакого соединения - он просто пассивно ждет, когда ваш компьютер сделает оба соединения с ним. Большинство серверов поддерживают соединения в пассивном режиме, так что вообще лучше оставить этот параметр включенным.

CallbackFunction

(функция) Имя функции, которая будет вызываться всякий раз когда происходит операция загрузки. (Эту возвращающуюся функцию можно использовать для отображения хода выполнения операции загрузки, своим собственным способом.)

Примечание: Если в CallbackFunction установлено значение nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.)

Возвращающаяся функция должна иметь возможность принять следующие параметры:

Message

(строка) Или пустая строка ("") или информационное сообщение отправленное сервером, такое как например "Resolving host name" или "Connecting to Server". Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать обращение к файлу:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueПродолжить обращение к файлу.
falseОстановить обращение к файлу как только это станет возможным.

Возврат

ResultVariable

(число) Размер файла на FTP сайте (в байтах). Если размер файла не может быть найден, возвращается -1. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия

Примеры

Пример 1

nFileSize = FTPWI.GetFileSize("ftp://ftp.myftpsite.com/myfile.txt", "anonymous", "guest@", MODE_BINARY, 20, 21, true, nil);
Получаем размер файла "myfile.txt" и сохраняем результат в переменной nFileSize.

Пример 2

-- Settings for FTPWI actions
-- Параметры для FTPWI действий
sFileOnServer = "ftp://ftp.myftpsite.com/myfile.exe";
sLocalFilePath = _TempFolder .. "\\myfile.exe";
sServerUser = "anonymous";
sServerPass = "guest@";
nServerMode = MODE_BINARY;
nServerTimeout = 20;
nServerPort = 21;
bUsePassive = true;

-- Set the max bytes allowed without alerting the user to 2MB (2*1024*1024):
-- Устанавливаем максимальное количество байтов разрешенное без оповещения пользователя в 2MB (2*1024*1024):
QuestionByteThreshold = 2097152;

-- Assume download should continue
-- Предполагаем, что загрузка будет продолжена
bContinueDownload = true;

-- Get size of file to be downloaded
-- Получаем размер загружаемого файла
FileSize = FTPWI.GetFileSize(sFileOnServer, sServerUser, sServerPass, nServerMode, nServerTimeout, nServerPort, bUsePassive, nil);

-- Check if filesize is unknown
-- Проверяем известен ли размер файла
if FileSize == -1 then

    -- Filesize is unknown, alert user
    -- Размер файла неизвестен, предупреждаем пользователя
    choice = Dialog.Message("Alert", "Filesize is unknown. Continue Download?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1);
    if choice == 7 then
        -- User chose not to continue with download
        -- Пользователь выбрал остановку загрузки
        bContinueDownload = false;
    end

    -- Check if filesize is greater than threshold
    -- Проверяем, не превышает ли размер файла установленного порога
elseif FileSize > QuestionByteThreshold then
    -- Filesize is larger than threshold, alert the user
    -- Размер файла больше порогового значения, предупреждаем пользователя
    choice = Dialog.Message("Alert", "Filesize is greater than the threshold by " .. FileSize - QuestionByteThreshold .. " bytes.  Continue Download?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1);
    if choice == 7 then
        -- User chose not to continue with download
        -- Пользователь выбрал остановку загрузки
        bContinueDownload = false;
    end
end

-- Check if download should continue
-- Проверяем, следует ли продолжать загрузку
if bContinueDownload then
    -- Download File
    -- Загружаем файл
    FTPWI.Download(sFileOnServer, sLocalFilePath, sServerUser, sServerPass, nServerMode, nServerTimeout, nServerPort, bUsePassive, nil);
else
    -- Don't download file, alert user that download has been terminated
    -- Не загружаем файл, предупреждаем пользователя что загрузка была прервана
    Dialog.Message("Alert", "Download aborted by user");
end
Проверяем размер файла, который будет загружен, на FTP сервере. Если файл больше установленного порогового значения, запрашиваем пользователя, продолжать ли загрузку.
Смотрите также: Связанные действия