PHP | fpassthru 函数

Lasted 2021-01-18 15:17:48

fpassthru 函数输出文件指针处的所有剩余数据。

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

函数定义

fpassthru ( resource $handle ) : int
// 源文件位于:ext/standard/file.c
# 函数定义

PHPAPI PHP_FUNCTION(fpassthru)
{
  ...
  size = php_stream_passthru(stream);
  RETURN_LONG(size);
}

参数

  • checkhandle - 文件指针。

返回值

  • checkint - 字符数目。失败时返回 false。

示例1: - 使用 fpassthru() 函数输出图片。

<?php
/**
 * PHP fpassthru() 函数输出图片。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 以二进制形式打开文件
$fileName = 'foo.png';
$fp = fopen($fileName, 'rb');

// 设置 Header
header("Content-Type: image/png");
header("Content-Length: " . filesize($fileName));

// 发送图片并终止脚本
fpassthru($fp);
exit;