Forum und email

fpassthru

(PHP 4, PHP 5)

fpassthru — ファイルポインタ上に残っているすべてのデータを出力する

説明

int fpassthru ( resource $handle )

与えられたファイルポインタを EOF まで読み、結果を出力バッファに書き出します。

ファイルに既にデータを書き終えている場合で ファイルポインタをファイルの先頭にリセットするには rewind() をコールする必要があります。

ファイルを更新したり特定のオフセットを探すのではなく 内容を出力バッファにダンプしたいだけの場合、 readfile() を使用することが可能です。 この場合、fopen() コールは必要ありません。

パラメータ

handle

ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。

返り値

エラーが起こった場合、fpassthru()FALSE を返します。 それ以外の場合、fpassthru()handle から読み込んだ文字の数を返し、出力へ渡します。

Example#1 バイナリファイルに対する fpassthru() の使用例

<?php

// バイナリモードでファイルをオープンする
$name './img/ok.png';
$fp fopen($name'rb');

// 正しいヘッダを送出する
header("Content-Type: image/png");
header("Content-Length: " filesize($name));

// 画像をダンプしスクリプトを終了する
fpassthru($fp);
exit;

?>

注意

注意: fpassthru() を Windows システムのバイナリファイルで 使用する場合、fopen() をコールする際に モードに b を追加してバイナリモードでファイルを オープンするようにしてください。
バイナリファイルを扱う場合は、必要でなくても b フラグを使用するようにしましょう。 それにより、スクリプトの可搬性がより高くなります。