fpassthru

输出文件指针处的所有剩余数据 (PHP 3, PHP 4, PHP 5)
int fpassthru ( resource handle )

说明

将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。

如果发生错误, fpassthru() 返回 FALSE。否则 fpassthru() 返回从 handle 读取并传递到输出的字符数目。

文件指针必须有效,并且必须指向一个由 fopen()fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。

如果已经向文件写入数据,就必须调用 rewind() 来将文件指针指向文件头。

如果既不修改文件也不在特定位置检索,只想将文件的内容下载到输出缓冲区,应该使用 readfile(),这样可以省去 fopen() 调用。

注意:

当在 Windows 系统中将 fpassthru() 用于二进制文件时,要确保在用 fopen() 打开文件时在 mode 中附加了 b 来将文件以二进制方式打开。

鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好。

例 570. 对二进制文件使用 fpassthru()

<?php

// &#20197;&#20108;&#36827;&#21046;&#26684;&#24335;&#25171;&#24320;&#25991;&#20214;
$name = './img/ok.png'
$fp = fopen($name, 'rb');

// &#21457;&#36865;&#21512;&#36866;&#30340;&#25253;&#22836;
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// &#21457;&#36865;&#22270;&#29255;&#24182;&#32456;&#27490;&#33050;&#26412;
fpassthru($fp);
exit;

?>

参见 readfile()fopen()popen()fsockopen()