Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Как скачать файл из интернета по HTTP?   Найти похожие ветки 

 
Alaman   (2004-08-23 23:17) [0]

Как скачать файл из интернета по HTTP?

Как скачать файл из интернета по HTTP?

Нашел в интернете два способа:

Первый способ:
function GetInetFile(const fileURL, FileName: string): boolean;
const
 BufferSize = 1024;
var
 hSession, hURL: HInternet;
 Buffer: array[1..BufferSize] of Byte;
 BufferLen: DWORD;
 f: file;
 sAppName: string;
begin
 Result := False;
 sAppName := ExtractFileName(Application.ExeName);
 hSession := InternetOpen(PChar(sAppName),
 INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 try
   hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
   try
     AssignFile(f, FileName);
     Rewrite(f,1);
     repeat
       InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
       BlockWrite(f, Buffer, BufferLen);
     until
       BufferLen = 0;
     CloseFile(f);
     Result := True;
   finally
     InternetCloseHandle(hURL);
   end;
 finally
   InternetCloseHandle(hSession);
 end;
end;

Эта функция возвращает true даже в том случае если связь прервалась посреди закачки.
Как мне узнать весь файл закачался или не весь?

Второй способ:

uses
 ...URLMon;

...
if UrlDownloadToFile(nil, PChar(DTfileURL), PChar(DTFileName), 0, nil)= 0
   then
     Memo1.lines.append("загрузка завершилась успешно")
   else
     Memo1.lines.append("Ошибка загрузки");
Этот метод кажется проще и возвращает false если файл не докачался.
Однако первый способ я встретил в десятке статей, тогда как второй только
в одной и то наряду с первым. Может у второго способа есть какие то подводные камни?
Каким же способом воспользоваться? и есть ли еше способы?


 
Kostik   (2004-08-25 22:14) [1]

Блин даже не знаю чем помочь.


 
Woolen ©   (2004-08-30 15:49) [2]

Есть и еще. Не знаю, через что он работает, но в Delphi есть стандартный Action для подобных вещей: TDownloadURL. Проверь через что он работает, может будет тебе полезен.



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1098322441
Думкин
2004-10-21 05:34
2004.11.07
С днем рождения! 21 октября


9-1085393686
DanilinSA
2004-05-24 14:14
2004.11.07
Пара вопросов по DelphiX


1-1098390694
Графтер
2004-10-22 00:31
2004.11.07
Рассчет фактариала числа


1-1098270070
Calm
2004-10-20 15:01
2004.11.07
TXMLDocuemnt, проблема с кирилицей


1-1098761666
Кто---то
2004-10-26 07:34
2004.11.07
Как запретить TShellTreeView обращаться к дисководу ?