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()