说明
int
fpassthru ( resource handle)
将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。
如果发生错误, fpassthru() 返回 FALSE。
否则 fpassthru() 返回从 handle
读取并传递到输出的字符数目。
文件指针必须有效,且必须指向由
fopen(),popen() 或
fsockopen() 成功打开的文件。
如果已经向文件写入了数据,可能需要调用 rewind()
来将文件指针指向文件头。当 fpassthru()
完成读取后就会关闭文件(使 handle 失效)。
如果既不修改文件也不在特定位置检索,只想将文件的内容下载到输出缓冲区,应该使用
readfile(),这样可以省去
fopen() 调用。
注:
当在 Windows
系统中将 fpassthru()
用于二进制文件时,要确保在用
fopen()
打开文件时在 mode 中附加了
b 来将文件以二进制方式打开。
鼓励在处理二进制文件时使用
b
标志,即使系统并不需要,这样可以使脚本的移植性更好。
例子 1. 对二进制文件使用 fpassthru()
<?php
// open the file in a binary mode $name = ".\public\dev\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;
?>
|
|
参见
readfile(),fopen(),popen()
和 fsockopen()。