fpassthru

Output all remaining data on a file pointer

&reftitle.description; `int` `fpassthru` `resource` `stream`

Reads to EOF on the given file pointer from the current position and writes the results to the output buffer.

You may need to call `rewind` to reset the file pointer to the beginning of the file if you have already written data to the file.

If you just want to dump the contents of a file to the output buffer, without first modifying it or seeking to a particular offset, you may want to use the `readfile`, which saves you the `fopen` call.

&reftitle.parameters;

`stream`

- &fs.validfp.all;
&reftitle.returnvalues;

Returns the number of characters read from `stream` and passed through to the output.

&reftitle.examples;

### Using `fpassthru` with binary files

    <?php

    // open the file in a binary mode
    $name = './img/ok.png';
    $fp = fopen($name, 'rb');

    // send the right headers
    header("Content-Type: image/png");
    header("Content-Length: " . filesize($name));

    // dump the picture and stop the script
    fpassthru($fp);
    exit;

    ?>

&reftitle.notes;

When using `fpassthru` on a binary file on Windows systems, you should make sure to open the file in binary mode by appending a `b` to the mode used in the call to `fopen`.

You are encouraged to use the `b` flag when dealing with binary files, even if your system does not require it, so that your scripts will be more portable.

&reftitle.seealso;

- `readfile`
- `fopen`
- `popen`
- `fsockopen`