Простий спосіб скачування файлу по http

Якщо ваша програма містить модулі (BPL або DLL) або є необхідність оновлювати саму програму, то напевно стояла проблема поновлення копій програми. З розвитком Internet з'явилася прекрасна можливість зробити це швидко і красиво. У даній статті ми розповімо, як додати опцію автооновлення програм з Internet.

Delphi дає нам повний доступ до API WinInet (wininet.pas), що дозволяє підключитися і завантажити будь-який файл з зазначеного веб, використовуючи протоколи FTP або HTTP. Наприклад, ми можемо використовувати функції API WinInet для створення FTP-браузера або програми для пошуку на публічних FTP-серверах заданих файлів.

Основна функція нашої програми - GetInetFile:

Зауваження: звичайно, цей приклад потрібно розширити, вставивши, наприклад, код для відображення прогресу скачування в цикл.

Використовувати функцію GetInetFile дуже просто:

А що якщо загубиться з'єднання - програма зависне.
Як цього уникнути (встановити нове з'єднання і докачати файл?

і антивірус розпізнає як вірус програму. з вашим кодом)

а якщо мені треба з фтп скачати, де треба вказати логін і пароль?

var FileOnNet, LocalFileName: string;

if GetInetFile (FileOnNet, LocalFileName) = True then
ShowMessage ( 'Download successful')
else
ShowMessage ( 'Error in file download')
end;

в C ++ Builder6 - IdHTTP і IdFTP (Indy Clients)

uses urlmon;
var i. hresult;
begin
if ParamCount <> 2 then begin
writeln ( 'format: wload '); exit;
end;
i: = URLDownloadToFile (nil, pchar (ParamStr (1)), pchar (ParamStr (2)), 0, nil);
if i <> 0 then writeln ( 'download error.', I);
end.

Имхо, все ж краще такі речі писати з використанням сокетів.

Щоб показувати прогрес, добре-б дізнатися розмір завантажувати файли.

може хто знає як програмно перевести IE в режим Online?

Угу, так і зробили в Shareaza 2.2.0.0

В результаті якщо Internet Explorer в offline режимі, або якщо включена Посилена Конфігурація Безпеки - нічого не працювало нафіг.

Схожі статті