Качаем файл из Internet

Если ваша программа содержит подключаемые модули (BPL или DLL) или есть необходимость обновлять саму программу, то наверняка стояла проблема обновления копий программы. С развитием Internet появилась прекрасная возможность сделать это быстро и красиво. В данной статье мы расскажем, как добавить опцию автообновления программ из Internet.
Delphi дает нам полный доступ к API WinInet (wininet.pas), что позволяет подключиться и скачать любой файл с указанного вебсайта, используя протоколы FTP или HTTP. Например, мы можем использовать функции API WinInet для создания FTP-браузера или программы для поиска на публичных FTP-серверах заданных файлов.
Основная функция нашей программы - GetInetFile:


uses Wininet;  
  
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;  

Замечание: конечно, этот пример нужно расширить, вставив, например, код для отображения прогресса скачивания в цикл.
Использовать функцию GetInetFile очень просто:


var FileOnNet, LocalFileName: string  
begin  
   FileOnNet:='http://src.fitkursk.ru/articles/mp3player.zip';  
   LocalFileName:='MyFile.zip';  
  
   if GetInetFile(FileOnNet,LocalFileName)=True then  
      ShowMessage('Download successful')  
   else  
      ShowMessage('Error in file download')  
  
end;   

Этот кусок кода скачивает файл с именем mp3player.zip, находящийся по адресу 'http://src.fitkursk.ru/articles/' и записывает его в текущий каталог под именем 'MyFile.zip'. Все очень просто.
Теги:
Качаем файл
Добавлено: 31 Июля 2018 06:32:50 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...