Главная страница
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.024 c
3-1097067340
Term
2004-10-06 16:55
2004.11.07
ХП в MSSQL2000


1-1098420950
Fynjy1984
2004-10-22 08:55
2004.11.07
Выручайте


3-1097143003
Sid
2004-10-07 13:56
2004.11.07
Снова BDE + локалка


6-1093554783
Dmitry
2004-08-27 01:13
2004.11.07
Indy - Скопировать TidMessage в другой TidMessage без потерь


1-1098627558
LAndreyV
2004-10-24 18:19
2004.11.07
Вопрос по компоненту EDIT