fpassthru
ファイルポインタ上に残っているすべてのデータを出力する
説明
int fpassthru(resource $stream
)
ファイルに既にデータを書き終えている場合で
ファイルポインタをファイルの先頭にリセットするには
rewind をコールする必要があります。
ファイルを更新したり特定のオフセットを探すのではなく
内容を出力バッファにダンプしたいだけの場合、
readfile を使用することが可能です。
この場合、fopen コールは必要ありません。
パラメータ
-
stream
-
ファイルポインタは、有効なファイルポインタである必要があり、
fopen または fsockopen で正常にオープンされた
(そしてまだ fclose でクローズされていない)
ファイルを指している必要があります。
戻り値
fpassthru は stream
から読み込み、出力に渡した文字数を返します。
例
例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
フラグを使用するようにしましょう。
それにより、スクリプトの可搬性がより高くなります。
参考
- readfile
- fopen
- popen
- fsockopen