AVZ 5. Руководство пользователя
×

16.47.1. function DownloadFile

function DownloadFile(AURL, ASaveName : string;
                      ADownloadMode : integer = 0;
                      AProxyServer : string='';
                      AProxyLogin : string='';
                      AProxyPasswd : string='');
 
 
Осуществляет загрузку файла из Интернет. Параметры (первые два обязательны, остальные - необязательные):
AURL - URL загрузки включая протокол, например http://www.myserver.ru/myfile.txt
ASaveName - имя, под которым файл сохраняется на диске в случае успешной загрузки. Параметр обязателен, диск должен быть доступен на запись, а указанный каталог должен существовать на диске. В имени файла допустимо указывать макросы  
ADownloadMode - код режима загрузки файла. Необязательный параметр, по умолчанию 0. Поддерживаются следующие коды:
0 - загрузка по настройкам Internet Explorer
1 - прямой доступ в Интернет, настройки IE игнорируются
2 - загрузка через прокси сервер без авторизации. Для корректной работы данного режима необходимо указать прокси в параметре AProxyServer
3 - загрузка через прокси сервер с авторизацией. Для корректной работы данного режима необходимо указать прокси в параметре AProxyServer и задать логин и пароль в параметрах AProxyLogin и AProxyPasswd
4 - загрузка через прокси сервер с NTLM авторизацией. Для корректной работы данного режима необходимо указать прокси в параметре AProxyServer и задать логин и пароль в параметрах AProxyLogin и AProxyPasswd
 
Прокси-сервер для режимов 2-4 задается в формате IP_адрес:порт
 
Функция возвращает true в случае успешной загрузки и False в случае ошибки. Следует отметить, что при указании имени несуществующего файла многие сайты вместо ошибки возвращают HTML страницу с сообщением об ошибке. В таком случае функция вернет true, но вместо необходимого файлам мы получим HTML код страницы ошибки. Следовательно, для надежного определения успешности загрузки следует проверять размер и контрольную сумму принятого файла, для чего пригодятся функции CalkFileMD5, CalkFileSHA1 и GetFileSize
 
Совместимость: AVZ 4.34 и выше
 
Пример:
 
Загрузка с настройкой по умолчанию
begin
  DownloadFile('http://www.yandex.ru', 'c:\ya_ru.txt');
end.
 
Загрузка через прокси-сервер без авторизации
begin
  DownloadFile('http://www.yandex.ru', 'c:\ya_ru.txt', 2, '192.168.1.1:8080');
end.
 
На заметку:
 
1. Данная функция может применяться для передачи неких данных (например статистики) по методу GET, параметры указываются в URL - это удобно для использования в корпоративной сети, например:
begin
  DownloadFile('http://192.168.1.1/stat.php?SuspCount='+inttostr(GetSuspCount), 'result.txt');
end.
В этом примере в файле result.txt будет содержаться ответ скрипта - файл можно загрузить с диска для анализа ответа, после чего удалить
 
2. Функция пытается выполнить загрузку без кеширования, чтобы исключить получение из кеша устаревшей версии файла, однако это не всегда срабатывает, так как к примеру некоторые прокси-сервера и оптимизаторы трафика игнорируют прагмы запроса типа "no-cache".
Защититься от этого можно, добавив к URL незначащий уникальный параметр, например:
begin
  DownloadFile('http://www.my_server.ru/my_file.txt?anti_cache='+
              inttostr(round(random*1000000)),
              'c:\my_file.txt');
end.