PHP fpassthru 文件系统函数

  • 定义和用法

    fpassthru - 输出文件指针处的所有剩余数据
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    fpassthru (  resource $handle  )   
    
    将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。 如果已经向文件写入数据,就必须调用 rewind() 来将文件指针指向文件头。 如果既不修改文件也不在特定位置检索,只想将文件的内容下载到输出缓冲区,应该使用 readfile(),这样可以省去 fopen() 调用。
  • 参数

    参数 必需的 描述
    handle 文件指针必须是有效的,必须指向由 fopen()fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。
  • 返回值

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

    <?php
    // 以二进制格式打开文件
    $name = './img/ok.png';
    $fp = fopen($name, 'rb');
    
    // 发送合适的报头
    header("Content-Type: image/png");
    header("Content-Length: " . filesize($name));
    
    // 发送图片并终止脚本
    fpassthru($fp);
    exit;
    ?>
    
    当在 Windows 系统中将 fpassthru() 用于二进制文件,要确保在用 fopen() 打开文件时在 mode 中附加了 b 来将文件以二进制方式打开。 鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好。
  • 相关函数

    readfile() - 输出文件
    fopen() - 打开文件或者 URL
    popen() - 打开进程文件指针
    fsockopen() - 打开一个网络连接或者一个Unix套接字连接