Delphi-Help

Главная Статьи Интернет Как узнать размер файла в Интернете?

Как узнать размер файла в Интернете?

Оцените материал
(1 Голосовать)


Как узнать размер файла в Интернете?

Способ первый

uses
  ..., WinInet;
 
(* Функция возвращает размер файла в байтах *)
function GetUrlSizeInByte( const URL: string ): integer;
var
  hSession, hFile: hInternet;
  dwBuffer: array[1..20] of char;
  dwBufferLen, dwIndex: DWORD;
begin
   Result := 0;
   hSession := InternetOpen( 'GetUrlSize', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil ,0 );
   if Assigned( hSession ) then
   begin
      hFile := InternetOpenURL( hSession, PChar( URL ), nil, 0, INTERNET_FLAG_RELOAD, 0 );
      dwIndex := 0;
      dwBufferLen := 20;
      if HttpQueryInfo( hFile, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex ) then
         Result := StrToInt( StrPas( @dwBuffer ) );
      if Assigned( hFile ) then
         InternetCloseHandle( hFile );
      InternetCloseHandle( hSession );
   end;
end;

Способ второй

uses
  ..., WinInet;
 
function GetHttpFileSize( const URL: string ): Int64;
var
  hSession, hRequest: Pointer;
  lpBuf: array[0..30] of Char;
  dwBufLen: DWORD;
begin
   hSession := InternetOpen( nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0 );
   hRequest := InternetOpenUrl( hSession, PChar( URL ), nil, 0, 0, 0 );
   dwBufLen := SizeOf( lpBuf );
   if not HttpQueryInfo( hRequest, HTTP_QUERY_CONTENT_LENGTH, @lpBuf, dwBufLen, PDWORD( nil )^ ) then
      Result := -1
   else
      Result := StrToInt64Def( lpBuf, -1 );
   InternetCloseHandle( hRequest );
   InternetCloseHandle( hSession );
end;
Прочитано 5187 раз
Другие материалы в этой категории: « Сканер портов Многопоточное ping-приложение »

Авторизация



Счетчики