HTTP.GetFileSize

number HTTP.GetFileSize ( string URL,
number Mode = MODE_BINARY,
number Timeout = 20,
number Port = 80,
table AuthData = nil,
table ProxyData = nil,
function CallbackFunction = nil )
Примеры

Описание

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

Примечание: Для получения размера файла по умолчанию будут применены установки прокси по умолчанию из текущих настроек браузера Internet Explorer, которые являются рекомендуемыми. Тем не менее, если нужны другие настройки прокси, они могут быть переданы через параметр ProxyData.

Совет: Если это действие дает ошибку, можно получить подробности указанной HTTP ошибки при помощи действия HTTP.GetHTTPErrorInfo.

Параметры

URL

(строка) Полный URL-адрес к файлу, чей размер нужно получить.

Mode

(число) Метод, используемый для доступа к файлу. Выбор из:

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

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

Timeout

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

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

Port

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

AuthData

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

КЛЮЧ
KEY
ТИП
TYPE
ОПИСАНИЕ
DESCRIPTION
UserNameстрокаИмя пользователя, используемое во время HTTP аутентификации.
PasswordстрокаПароль, используемый во время HTTP аутентификации.

ProxyData

(таблица) Таблица содержащая данные о прокси-сервере пользователя. Можно передать значение nil (значение по умолчанию) для использования параметров прокси по умолчанию из текущих настроек браузера Internet Explorer (рекомендуемое), или передать таблицу определенных параметров прокси. (Возможно потребуется запрашивать эти данные у пользователя.) Таблица индексированная следующими ключами:

КЛЮЧ
KEY
ТИП
TYPE
ОПИСАНИЕ
DESCRIPTION
PUserNameстрокаИмя пользователя прокси-сервера.
PPasswordстрокаПароль прокси-сервера.
PServerAddressстрокаАдрес прокси-сервера.

CallbackFunction

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

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

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

Message

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

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

Возврат

ResultVariable

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

Примеры

Пример 1

nSize = HTTP.GetFileSize("http://www.mydomain.com/myfile.exe", MODE_BINARY, 20, 80, nil, nil, nil);
Получаем размер файла "myfile.exe" размещенного на сайте "http://www.mydomain.com" и сохраняем его в переменной nSize.

Пример 2

-- Settings for HTTP actions
-- Параметры для HTTP действий
sFileOnServer = "http://www.yourdomain.com/pub/file.ext";
sLocalFilePath = _TempFolder .. "file.ext";
nServerMode = MODE_BINARY;
nServerTimeout = 20;
nServerPort = 80;
tAuthData = nil;
tProxyData = nil;

-- 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 Filesize of file to be downloaded
-- Получаем размер загружаемого файла
FileSize = HTTP.GetFileSize(sFileOnServer, nServerMode, nServerTimeout, nServerPort, tAuthData, tProxyData, 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 file size 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, using built in status dialog
    -- Загружаем файл, используем встроенное диалоговое окно состояния
    StatusDlg.Show();
    StatusDlg.ShowCancelButton();
    HTTP.Download(sFileOnServer, sLocalFilePath, nServerMode, sServerPass, nServerPort, tAuthData, tProxyData, nil);
    StatusDlg.Hide();
else
    -- Don't download file, alert user that download has been terminated
    -- Не загружаем файл, предупреждаем пользователя, что загрузка была прекращена
    Dialog.Message("Alert", "Download aborted by user");
end
Проверяем размер файла на HTTP сервере для загрузки. Если файл больше чем заранее определенный порог, запрашиваем пользователя о продолжении загрузки.
Смотрите также: Связанные действия