function DownloadFile

function DownloadFile

Previous pageReturn to chapter overviewNext page

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.