Protokół HTTP - jak pobrać rozmiar pliku?

0

Witam,

Tak czytam sobie RFC (a jest co czytać), 99.9% z tego co tam jest, nie jest mi potrzebne, a do tego co chce nie moge jakos sie dokopać...

Chodzi mi o w sumie prostą rzecz - jedyne, czego potrzebuję to pobranie pliku przez http. W zasadzie wiem jak to zrobić na przykład chcę pobrac plik: http://j.o2.pl/idi/tleninst60373.exe:

telnet j.o2.pl 80
GET /idi/tleninst60373.exe
HOST o2.pl

.. i transfer idzie. Ale to mi nie wystarczy, bo przed rozpczęciem transferu dobrze by bylo wiedziec jaki jest rozmiar tego pliku tleninst60373.exe po to, żeby mozna bylo zaimpementować chociazby progress pobierania. Czy jest polecenie, ktore umozliwi okreslenie rozmiaru pliku? Bo ja nie znalazlem niestety :/

0

Jak wyslesz zamiast GET polecenie HEAD z tymi samymi parametrami to otrzymasz sam naglowek a wnim bedzie content-length, ktory okresla wielkosc pliku. Ale oczywiscie moze go nie byc (bardzo rzadko to sie obecnie zdaza). Generalnie po GET tez dostaniesz taki sam naglowek (konczy sie podwojnym enterem a potem sa dane).

np na 4p http://84.16.243.134/bin/pngimage.zip

GET /bin/pngimage.zip HTTP/1.1
Host: 84.16.243.134

a odpowiedz

HTTP/1.1 200 OK
Expires: Thu, 18 Dec 2008 21:26:44 GMT
Cache-Control: max-age=604800
Content-Type: application/zip
ETag: "-1589549991"
Accept-Ranges: bytes
Last-Modified: Fri, 10 Oct 2008 04:25:37 GMT
Content-Length: 57122
Date: Thu, 11 Dec 2008 21:26:44 GMT
Server: lighttpd/1.4.13

tu dwa enetery i dane .....
0

Pobieram plik w Javie liniami i sumuję ilości znaków w tych liniach. Niestety na końcu, obliczony rozmiar pliku nie zgadza się z rozmiarem z "Content-Length". Czy ten rozmiar zawiera w sobie rozmiar nagłówka?

0

rozmiar nie zawiera w sobie naglowka, dodatkowo moze byc podzielony (ale o tym wtedy jest napisane w naglowku Transfer-Encoding: chunked).

0

Dzięki za odpowiedź.
Czym może być spowodowana różnica w rozmiarze pobranym z nagłówka a rozmiarem ściągniętego pliku? Znaki nowej linii zliczam jako 2 B. Sprawdziłem rozmiar ściągniętego już pliku i zgadza się z moim podliczaniem jego rozmiaru w Javie przy ściąganiu. W skrócie: rozmiar w nagłówku nie zgadza się z rozmiarem pobranego już pliku (ściągnięty plik jest większy). Jeżeli to istotne to kodowanie jest w UTF-8.

Chcę to rozwiązać, bo trochę to niezbyt ładnie wygląda, gdy w postępie ściągania ilość ściągniętych danych przekracza 100%.

0

musialbys podac troche wiecej danych ...

Czy jak go sciagniesz przegladarka i zapiszesz jako to rozmiar tez sie nie zgadza ?
Enter moze byc 2B ale nie musi (w naglowku tak, ale w tresci pliku nie)

0

Sorry, że dopiero teraz odpisuję.

Sprawdziłem dla różnych plików i wszystko dobrze działa. Tylko dla tego mojego wynik jest zły, więc to raczej jego nagłówek jest błędny.

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