[WinInet] Problem z rozmiarem pliku do pobrania.

0

Witam.

Otoz moj problem polega na tym, ze pobieram plik ze strony www za pomoca WinInet.

Cale pobieranie dziala pieknie, ale nie udaje mi sie pobrac rozmiaru pliku na serwerze.

    dwBufLen := 1024;
    dwIndex := 0;
    GetMem(pBuf, dwBufLen);

    dwBufLen := Length(Buf);
    
    { pobranie informacji na temat wielkości pliku }
    okay := HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, pBuf, dwBufLen, dwIndex);
    
    dwSize := StrToInt(StrPas(pBuf));

Funkcja HttpQueryInfo nie zwraca mi rozmiaru pliku, poniewaz wystepuje blad ERROR_HTTP_HEADER_NOT_FOUND

Przez co wykrzacza sie linia kodu: dwSize := StrToInt(StrPas(pBuf)); i wyswietla EConvertError;

Wiem, ze da sie pobrac plik bez jego rozmiaru, ale koniecznie musze wyswietlic postep pobierania na progressbarze. Ponadto progressbar musi miec wartosc maxymalna ustawiona na 100, dlatego tez musze wykonac dzialanie: TotalSize div dwSize * 100, by ukazywac procentowy postep. Niestety nie majac dwSize wszystko nie dziala tak jak powinno.

P.S Korzystam z kodu zamieszczonego w Kompendium przez p. Adama.

0

Serwer HTTP nie musi podawać wielkości wysyłanej przez siebie odpowiedzi, czasami po prostu nie ma realnej możliwości jej poznania, np. gdy treść odpowiedzi generuje na bieżąco jakiś skrypt.

0

W takim razie jak przegladarka pobierajac pliki zna ich rozmiar? Przeciez to serwer wysyla dane i informacje o nich. Takie jest moje zdanie. Powinien byc jakis sposob na obejscie tego problemu lub jego rozwiazanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1