fpassthru
fpassthru($stream)
Wypisuje zawartość otwartego pliku od bieżącej pozycji do końca i zwraca liczbę wypisanych bajtów. Nadaje się do wysyłania pliku do pobrania.
Parametry
- $stream – otwarty plik z fopen().
Przykłady
$file = sys_get_temp_dir() . "/garth-przyklad.txt";
file_put_contents($file, "Banan\nGruszka\nKiwi\n");
$f = fopen($file, "rb");
// pomiń pierwszy wiersz, wypisz resztę
fgets($f);
$bytes = fpassthru($f); // Gruszka\nKiwi\n
echo $bytes; // 13
fclose($f);
unlink($file);
// wysłanie pliku do pobrania:
// header("Content-Type: application/pdf");
// header("Content-Length: " . filesize($path));
// $f = fopen($path, "rb");
// fpassthru($f);
Na co uważać
- Wypisuje od bieżącej pozycji, nie od początku. readfile() prościej wypisze cały plik od początku i nawet sama go otworzy.
- Jeśli włączone jest buforowanie wyjścia (ob_start()), cały plik trafi do pamięci. Przed wysłaniem dużego pliku wyłącz je funkcją ob_end_clean().
- Pliki binarne otwieraj w trybie "rb".
Powiązane funkcje:
readfile()
fopen()
fread()
header()
ob_end_clean()
passthru()