Воскресенье, 20.07.2025, 23:09
Зона 51
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Загрузить файл по HTTP
ShiftДата: Воскресенье, 08.04.2012, 11:03 | Сообщение # 1
Лейтенант
Группа: Администраторы
Сообщений: 68
Репутация: 2
Статус: Offline
Обычно при разработке приложений, которые планируется в дальнейшем обновлять и усовершенствовать, основные модули хранятся в виде пакетов (Package) или библиотек DLL. В настоящее время Internet предоставляет возможность без особых усилий осуществлять обновление этих модулей. Поэтому добавление к Вашему приложению функции авто-обновления, является наилучшим способом для обновления приложения.

Давайте посмотрим, как реализовывается данный механизм в любом FTP приложении.

Delphi предоставляет нам полный доступ к WinInet API (wininet.pas), который можно использовать для соединения и получения файлов с веб-сайта, который использует либо Hypertext Transfer Protocol (HTTP) либо File Transfer Protocol (FTP). Например, мы можем использовать функции из WinInet API для: добавления FTP браузера в любое приложение, создания приложения, которое автоматически скачивает файлы с общедоступных FTP серверов или поиска Internet сайтов, ссылающихся на графику и скачивать только графику.

Функция GetInetFile
Code
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;


Использование
Code
var
   FileOnNet, LocalFileName: string
begin
   FileOnNet := 'http://its_your_site.ru/library/DelphiWorld.zip';
   LocalFileName := 'C:\DelphiWorld.zip';

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

Данный код запрашивает файл 'http://its_your_site.ru/library/DelphiWorld.zip' с сайта, скачивает его, и сохраняет его как 'C:\DelphiWorld.zip'.


 
  • Страница 1 из 1
  • 1
Поиск:


Создать бесплатный сайт с uCoz