Problem dotyczy błędnego pobierania plików za pomocą skryptu php tak więc nie chcesz czytać, irytuje Cię to - nie czytaj.
Napisałem skrypt, dzięki któremu pobieram pliki z serwera niejawnie. Czyli uruchamiam funkcję podając jej pewne argumenty, dzięki którym wyszukuję właściwy plik i wysyłam plik użytkownikowi do pobrania bla bla bla. Wałkowane od lat ale jakoś musiałem zacząć
Otóż, wszystko pięknie ładnie ale... w przypadku pobierania plików większych występuje błąd pobierania - pobiera mi plik o wielkości 195B mimo, że plik zajmuje 31MB - wydaje mnie się, że jest to jakiś nagłówek przekierowania czy coś takiego. Z plikami o wielkości do 16MB (tylko do 16 sprawdzałem) nie ma żadnego problemu. Klikam, pobieram, otwieram cyk działa.
Z grubsza skrypt wygląda tak:
<?php $typ_mime = DajTyp($file_extension); // zwracam nagłówek typu np. "application/octet-stream" lub "image/jpg" // NAGŁÓWKI HTTP } //ZOSTALO SPRAWDZONE Z CZESCIOWYM POBIERANIEM I BEZ if ($range){ $reg = "/bytes=([0-9]+)-([0-9]*)/"; $r_start = (int) $matches[1]; $r_stop = (int) $matches[2]; if ($r_stop < $r_start) $r_stop = $fsize - 1; $c_length = $r_stop - $r_start + 1; }else{ } // NAGŁÓWKI SPRAWDZILEM CHYBA W KAZDEJ WARIACJI - BEZ EFEKTU ?>
sam proces pobierania sprawdziłem... i za pomocą funkcji FILEREAD() i za pomocą FREAD()
<?php // ROZWIĄZANIE A exit; ?>
<?php // ROZWIĄZANIE B exit; ?>
<?php // ROZWIĄZANIE C { { } } ?>
<?php // ROZWIĄZANIE C { { } } ?>
W przypadku rozwiązania A i B plik 31MB nie jest pobierany (tylko 195B otrzymuje użytkownik). Rozwiązanie C i D rozbiłem celowo dla przedstawienia różnicy zastosowania funkcji usleep(x). Rozwiązanie C nie daje efektu pozytywnego. Dopiero rozwiązanie D może satysfakcjonować ale częściowo. Plik pobierany jest w przeglądarkach IE oraz OPERA - w przypadku FIREFOXA nie ma efektu.
Skrypt, który przedstawiłem został mocno okrojony w celu przedstawienia problemu i jest on efektem paru dni googlowania i przeglądania forum. Wiem, że problem poruszany już był masę razy, ale cóż... jeszcze nie znalazłem rozwiązania właściwego.
Chciałbym usłyszeć wasze solucje, złote myśli,
Dawid.
wolna myśl... a może to problem po stronie serwera, może to jakieś ograniczenie, które powoduje obcięcie bufora czytanego pliku . Serwer na superhost.pl.