Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Закачать файл из Интернета 3

Delphi , Интернет и Сети , Файлы и Интернет

Закачать файл из Интернета 3

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

 
{Forces a download of the requested file, object, or directory 
listing from the origin server, not from the cache}

 function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean;
 var
   hSession: HINTERNET;
   hService: HINTERNET;
   lpBuffer: array[0..1024 + 1] of Char;
   dwBytesRead: DWORD;
 begin
   Result := False;
   s := '';
   // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); 
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
   try
     if Assigned(hSession) then
     begin
       hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
       if Assigned(hService) then
         try
           while True do
           begin
             dwBytesRead := 1024;
             InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
             if dwBytesRead = 0 then break;
             lpBuffer[dwBytesRead] := #0;
             s := s + lpBuffer;
           end;
           Result := True;
         finally
           InternetCloseHandle(hService);
         end;
     end;
   finally
     InternetCloseHandle(hSession);
   end;
 end;

 //aufrufen 
var
   s: String;
 begin
  if DownloadURL('http://www.swissdelphicenter.ch/', s) then
    ShowMessage(s);
 end;

Перевод контента на русский язык:

Это программное обеспечение Delphi, которое загружает файл с интернета и отображает его содержимое в окне сообщений.

Распределение кода:

Функция DownloadURL_ NOCache

Эта функция принимает два параметра: aUrl, URL для загрузки, и s, строковая переменная для хранения загруженных данных. Функция возвращает булевое значение, указывающее, была ли загрузка успешной.

Функция использует API WinInet для открытия сеанса интернета (InternetOpen) и затем открывает соединение с указанным URL (InternetOpenUrl). Она читает файл по частям в размере 1024 байта каждый раз, используя InternetReadFile, и добавляет каждую часть к строке s. Загрузка считается успешной, если все данные были прочитаны успешно.

Основной код

Основной код определяет переменную s и вызывает функцию DownloadURL_ NOCache с URL 'http://www.swissdelphicenter.ch/'. Если загрузка была успешной, она отображает содержимое загруженного файла в окне сообщений, используя ShowMessage.

Имущества

  1. Имя функции DownloadURL_ NOCache предполагает, что она загружает файл без кэширования, но на самом деле она читает файл с сервера по умолчанию, а не из кэша. Рекомендуется переименовать функцию в something like DownloadFileFromOriginServer.
  2. Массив lpBuffer имеет фиксированный размер 1024+1 байта. Если файл больше этого буфера, он будет обрезан. Рекомендуется использовать динамический буфер или увеличить размер буфера.
  3. Обработка ошибок в блоках try-finally может быть улучшена, если поймать конкретные исключения и записать ошибки вместо закрытия handle.
  4. Код предполагает, что URL указывает на файл, который можно прочитать как текст. Если URL указывает на бинарный файл, это может не работать правильно.

Альтернативное решение

Вместо использования API WinInet вы можете использовать библиотеку Indy, которая предоставляет более современный и проще-используемый интерфейс для загрузки файлов с интернета. Вот пример:

uses
  IdHTTP;

var
  s: String;
begin
  s := '';
  with TIdHTTP.Create do
  try
    s := Get(aUrl);
  finally
    Free;
  end;
  ShowMessage(s);
end;

Этот код использует компонент TIdHTTP для загрузки файла и хранения его в строке s. Метод Get отправляет запрос GET к указанному URL и возвращает тело ответа как строку.

Функция DownloadURL_NOCache позволяет скачивать файлы из Интернета без использования кэша, обеспечивая downloads только сorigin сервера.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы и Интернет ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-01 17:43:34/0.0033929347991943/0