Przerwane ściąganie pliku jako plik prawidłowo ściągnięty

Przerwane ściąganie pliku jako plik prawidłowo ściągnięty
  • Rejestracja: dni
  • Ostatnio: dni
0

Sprawa dotyczy szczególnie plików z różnych serwerów typu rapidshare, ostatnio zauważyłem przy Wrzucie i chyba FileServe.

Nie byłoby nic dziwnego, gdyby nie to, że ten sam problem wystepują przy 3(!) różnych przeglądarkach: Internet Explorer (wersja 5.0 lub 6.0, na nowszych tego nie miałem, bo nie używam IE), Chrome i Firefox (w obu przypadkach najnowsza lub prawie najnowsza wersja).

Problem polega na tym, że że ściągamy plik mający minimum kilkadziesiąt megabajtów (im większy, tym większe prawdopodobieństwo tego błędu).

Błąd objawia się tym, ze przeglądarka rozpoczyna pobieranie, już od początku wie, jak duży jest ten plik. Ściąga się do połowy, przeglądarka zachowuje się tak, jakby plik został prawidłowo ściągnięty bez błędu, tylko, że ten plik jest ucięty w miejscu przerwania ściągania. Rozumiem, że przyczyna urywanego ściągania jest po stronie serwera.

Gdyby autor przeglądarki pomyślał i do funkcji ściągania pliku dodał taki kod, to problem by się skutecznie rozwiązał:

Kopiuj
If (sciaganie_zakonczone)
{
   if (rozmiar_sciagnietego_pliku == rozmiar_pliku_odczytany_przed_sciaganiem)
   {
      Sciaganie_przeprowadzone_prawidowo();
   }
   else
   {
      Wyswietl_komunikat_ze_wystapil_blad_i_zaproponuj_ponowne_sciaganie_pliku();
   }
}

Czyżby żaden z trzech największych producentów przeglądarki nigdy nie miał do czynienia z taką sytuacja, że żaden z nich tego nie zaimplementował "na wszelki wypadek"? A implementacja tego, to chyba żaden problem.

Jaka jest najczęstsza rzeczywista przyczyna takiego urywanego ściągania?

unikalna_nazwa
  • Rejestracja: dni
  • Ostatnio: dni
0

wydaje mi się że jesteś geniuszem i nikt inny po prostu nie wpadł na taki kod

RedbaK
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Helsingør / FZ
  • Postów: 1051
0

Niesamowite. :]

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Wydaje mi się, że pod Firefoksem 3.6 miałem sytuację kiedy Content-Length był mniejszy niż pobierany plik, a mimo to po prostu ciągle było 100% i plik dalej się pobierał.

Tu masz przykład: http://dev.demonical.pl/small-file-test/putty2.exe
Wysyłany jest podrobiony Content-Length i wynosi on 3 bajty. Pobierany plik to oficjalny putty.exe. Pod Mozillą 3.6 pobrało mi pełny działający plik, dla porównania wget sobie nie poradził.
Więc albo coś źle testujesz, albo masz przestarzałą przeglądarkę.

Edit: Nawet IE6 pobrał prawidłowo.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
Bilski napisał(a)

Czyżby żaden z trzech największych producentów przeglądarki nigdy nie miał do czynienia z taką sytuacja, że żaden z nich tego nie zaimplementował "na wszelki wypadek"? A implementacja tego, to chyba żaden problem.

Doprawdy? A skąd przeglądarka ma wiedzieć jaki jest rozmiar ściągniętego pliku na dysku?

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0
somekind napisał(a)
Bilski napisał(a)

Czyżby żaden z trzech największych producentów przeglądarki nigdy nie miał do czynienia z taką sytuacja, że żaden z nich tego nie zaimplementował "na wszelki wypadek"? A implementacja tego, to chyba żaden problem.

Doprawdy? A skąd przeglądarka ma wiedzieć jaki jest rozmiar ściągniętego pliku na dysku?

Content-Length jest po to, żeby ją poinformować ile na dysku serwera owy plik waży. Jeśli nawali wyliczanie tego nagłówka, to przeglądarka powinna kontynuować ściąganie jeśli serwer po przekroczeniu Content-Length dalej coś śle. Mozilla tak robi, IE6 też.

OT
  • Rejestracja: dni
  • Ostatnio: dni
0

Też to kiedyś miałem kilka razy. Wydaje mi się że to raczej kwestia systemu albo nie wiem czego - łącza lub samego hostingu z którego pobierasz? W każdym razie, gdy pobierałem prze kiedys pliki przez rapidshare premium: kilka razy zdarzyło mi się to pod windows, pod linuksem ani razu a potem wszystko się naprawiło i tu i tu

P.S. Podobny tematu tu był tylko nie chce mi się szukać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.