Forum und email

fpassthru

(PHP 4, PHP 5)

fpassthru — Imprime todo os dados restantes de um ponteiro de arquivo

Descrição

int fpassthru ( int $handle )

Lê até o fim do arquivo (EOF) do ponteiro de arquivo dado e imprime os resultados para a buffer de saída.

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.

O ponteiro de arquivo tem que ser válido e apontar para um arquivo aberto com sucesso por fopen(), popen() ou fsockopen(). Você pode precisar chamar rewind() para reiniciar o ponteiro do arquivo para o início do arquivo caso você já tenha escrito dados no arquivo. O arquivo é fechado quando fpassthru() acaba de ler (deixando handle sem utilidade).

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

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.

Example#1 Using fpassthru() with binary files

<?php

// abre o arquivo em modo binário
$name ".\public\dev\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;

?>

Veja também readfile(), fopen(), popen() e fsockopen()