Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wysyłanie pliku do przeglądarki
Forum PHP.pl > Forum > Przedszkole
uzytkowicz1
Przedstawie to tak:

nie chcę szaremu użytkownikowi dać adresu do pliku -> www.domena.pl/pliki/a.zip
więc wymyśliłem sposób aby zrobić to tak -> www.domena.pl/download?pliki=a.zip

i teraz moje pytanie, czy jeśli otworze ten plik fopen i oczywiście dodam odpowiedni header, że zacznie pobieranie się pliku, to nie nastąpi przepełnienie się bufforu PHP ?

zdaje sobie sprawę tego, że PHP za pomocą funkcji "echo fread" przygotuje cały plik w 3 sekundy, a przecież pobieranie tego pliku przy transferze 10 kb/s może potrwać nawet i godzinę smile.gif

czy użycie funkcji flush da mi coś na tej zasadzie, że wyśle 128kb danych, funkcja flush poczeka, aż przeglądarka odbierze dane i przesyłam kolejne 128kb i tak do końca pliku ? dobrze rozumiem zasade działania tej funkcji ? czy istnieje jakaś inna o takim działaniu ?

Pozdrawiam
potreb
Hmm nigdy nie miałem okazji otwierać za pomocą fopen, ale przy moim skrypcje jest ob_flush:
  1. header('Content-Description: File Transfer');
  2. header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
  3. header('Pragma: public');
  4. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  5. header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  6. // force download dialog
  7. header('Content-Type: application/force-download');
  8. header('Content-Type: application/octet-stream', false);
  9. header('Content-Type: application/download', false);
  10. header('Content-Type: '.$r->fmime.'', false);
  11. // use the Content-Disposition header to supply a recommended filename
  12. header('Content-Disposition: attachment; filename="'.basename($url).'";');
  13. header('Content-Transfer-Encoding: binary');
  14. header('Content-Length: '.filesize($url));
  15. flush();
  16. readfile($url);


Pobieranie wchodzi natychmiast, a może dlatego że mam szybsze łącze, przykład żywcem zdjęty z manuala.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.