Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
4-1096470270
sidrom
2004-09-29 19:04
2004.11.07
открытие файла в приложении по умолчанию


14-1097859540
lipskiy
2004-10-15 20:59
2004.11.07
Где дают нормальный бесплатный ftp? И много?


1-1098634662
DIS
2004-10-24 20:17
2004.11.07
работа с реестром


14-1098448210
Prohodil Mimo
2004-10-22 16:30
2004.11.07
При помощи какой переменной или функции можно узнать ...


14-1098201489
kaZaNoVa
2004-10-19 19:58
2004.11.07
Замедление .. как реализовать ?




   Наверх