(PHP 4, PHP 5, PHP 7)
fpassthru — Imprime todo os dados restantes de um ponteiro de arquivo
$handle
)Lê até o fim do arquivo (EOF) do ponteiro de arquivo dado e imprime os resultados para a buffer de saída.
Se você precisa chamar rewind() para resetar o ponteiro do arquivo para início do arquivo se você já escreveu dados para o arquivo.
Se você somente quiser jogar o conteúdo de um arquivo para o buffer de saída, sem primeiro modificar ou procurar por um detalhe qualquer, você pode querer usar a função readfile(), que vai economizar uma chamada a função fopen().
handle
O ponteiro de arquivo precisa ser válido, e apontar para um arquivo aberto por fopen() ou fsockopen() (e ainda não fechado por fclose()).
Se um error ocorrer, a função fpassthru()
retorna FALSE
. No sucesso, fpassthru() retorna
o número de caracteres lidos do handle
e passado para a exibição.
Exemplo #1 Usando fpassthru() com arquivo binário
<?php
// abre o arquivo em modo binário
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// envia os headers
header("Content-Type: image/png");
header("Content-Length: ".filesize($name));
// manda a imagem e pára o script
fpassthru($fp);
exit;
?>
Nota:
Quando utilizando fpassthru() em um arquivo binário em sistemas Windows, você precisa verificar se abriu o arquivo em modo binário, acrescentando um b no modo informado na chamada de fopen().
Você é encorajado a utilizar o modo b quando trabalhando com arquivos binários, mesmo que seu sistema não requira isso, de forma que seus scripts se tornem mais portáveis.