![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет
В FAQ есть код Код:
GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH, 'http://some.com/some.zip');
function GetUrlInfo(const dwInfoLevel: DWORD; const FileURL: string):
string;
var
hSession, hFile: hInternet;
dwBuffer: Pointer;
dwBufferLen, dwIndex: DWORD;
begin
Result := '';
hSession := InternetOpen('STEROID Download',
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hSession) then begin
hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0,
INTERNET_FLAG_RELOAD, 0);
dwIndex := 0;
dwBufferLen := 20;
if HttpQueryInfo(hFile, dwInfoLevel, @dwBuffer, dwBufferLen, dwIndex)
then Result := PChar(@dwBuffer);
if Assigned(hFile) then InternetCloseHandle(hFile);
InternetCloseHandle(hsession);
end;
end;Код возвращает результат в виде , например Код:
4823- Как узнать полный объем файла перед скачиванием в байтах ? Спасибо |
|
#2
|
||||
|
||||
|
Используй FtpGetFileSize через Windows Internet API. Пропиши в uses - wininet.
|
|
#3
|
|||
|
|||
|
нашел решение
Код:
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; |