Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Как узнать размер файла перед скачиванием   Найти похожие ветки 

 
Kme   (2004-04-27 22:48) [0]

Добрый вечер! Обращаюсь к Вам с таким вопросом. Как узнать размер файла перед скачиванием по HTTP? В интернете везде лежит функция

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;


Но она выдает неправильные значения. Очень не хочется использовать компоненты FastNet! Необходимо обойтись без них!


 
SammIk ©   (2004-04-28 02:41) [1]

TClientSocket
Конектишься, кидаешь гет запрос, тебе возвращают что-то
типа:
HTTP/1.0 200 OK
Date: Tue, 27 Apr 2004 22:39:16 GMT
Server: Apache/1.3.27 (Unix) FrontPage/5.0.2.2623 PHP/4.3.2 mod_gzip/1.3.19.1a mod_accounting/1.0 mod_fastcgi/2.4.0 mod_ssl/2.8.14 OpenSSL/0.9.7b rus/PL30.17
Content-Length: 32794<<<<<Размер в баитах
Connection: close
Content-Type: text/html; charset=windows-1251


 
BiN ©   (2004-04-28 09:19) [2]

>>SammIk

Сдается мне, что работа HttpQueryInfo сводится именно к такому  get-запросу

>>Kme   (27.04.04 22:48)

Странно, что у тебя AV не выскакивает.

Замени  dwBuffer: Pointer; на  
dwBuffer: array [0..20] of char;
и все будет работать.


 
VMcL ©   (2004-04-28 10:45) [3]

>>SammIk ©  (28.04.04 02:41) [1]

ИМХО, сначала следует послать запрос HEAD.


 
Kme   (2004-04-28 22:06) [4]

To BiN: Огромное спасибо! Все заработало!



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.077 c
14-1086191712
_zxc
2004-06-02 19:55
2004.06.20
Есть работа #2


1-1086324889
Алекс
2004-06-04 08:54
2004.06.20
народ программа вылетает - непонятно какая ошибка,помогите разобр


14-1086111375
SergP
2004-06-01 21:36
2004.06.20
Какой-то нехороший человек шлет мыла (наверное с вирями)


1-1085493215
Виноградов Алексей
2004-05-25 17:53
2004.06.20
Файл текстового типа (textfile). Как узнать его размер ?


6-1082939222
Wiz@rd
2004-04-26 04:27
2004.06.20
SMTP &amp; Outlook