- PHP 教程
- PHP - 首页
- PHP - 路线图
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混淆
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期与时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 比较符
- PHP 控制语句
- PHP - 决策制定
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 具名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象的 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - Traits
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET & POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 过滤输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发者
- PHP - 针对 PERL 开发者
- PHP - 框架
- PHP - Core PHP vs. 框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 预期
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的特性
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP 文件系统 fpassthru() 函数
PHP 文件系统fpassthru()函数用于读取从打开文件中的当前位置到文件结尾 (EOF) 的所有数据。它还可以将结果写入输出缓冲区。此函数可以返回传递的字符数,或者在失败时返回 false。
当我们在 Windows 系统上的二进制文件中使用fpassthru()函数时,必须以二进制模式打开文件。
语法
以下是 PHP 文件系统fpassthru()函数的语法:
int fpassthru ( resource $handle )
参数
使用fpassthru()函数所需的参数如下:
序号 | 参数及说明 |
---|---|
1 |
handle (必需) 这是由 fopen() 创建的文件指针资源。 |
返回值
它返回从文件指针读取的字节数。如果发生错误,它将返回 FALSE。
PHP 版本
fpassthru()函数最初作为核心 PHP 4 的一部分引入,并且与 PHP 5、PHP 7、PHP 8 兼容良好。
示例
在下面的 PHP 代码中,我们将打开一个文件并读取它的第一行。接下来,它使用 PHP 文件系统fpassthru()函数将文件的其余部分(从第二行开始)回显到输出缓冲区。
<?php $file = fopen("/PhpProject/sample.txt", "r"); // Read first line fgets($file); // Send rest of the file to the output buffer echo fpassthru($file); fclose($file); ?>
输出
上述 PHP 代码的输出为:
Tutorix7
示例
在这个示例中,我们将打开一个文件并定义下载文件的标头。它通过使用fpassthru()函数将文件发送到用户的浏览器来启动文件下载。
<?php // Define the file path and open it $file = fopen("/Applications/XAMPP/xamppfiles/htdoc/mac/myfile.txt", "rb"); //Define the content type header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename='example.txt'"); //Send data of file to browser fpassthru($file); //Close the file fclose($file); ?>
输出
这将生成以下结果:
# The provided code will result in a file download prompt on the user's browser. The content is being received directly from the server, and the file that is being downloaded is called "myfile.txt".
示例
在这个示例中,我们将打开一个 JPEG 图片文件,并设置相应的 content-type 标头。我们将使用fpassthru()函数将图像内容直接输出到浏览器。
<?php // Open the image file here $image = fopen("image.jpg", "rb"); //Define the content type header("Content-Type: image/jpeg"); // Send image file to browser fpassthru($image); //Close the file fclose($image); ?>
输出
这将产生以下结果:
The output of this code would be displaying the image "image.jpg" directly in the browser.
示例
现在,我们将尝试使用fpassthru()函数和将内容类型定义为视频来流式传输视频文件。
因此,代码打开 "video.mp4" 视频文件并将视频内容类型标头设置为 video/mp4。此外,"Accept-Ranges" 标头用于方便在视频内搜索。
<?php // Open the video file here $video = fopen("video.mp4", "rb"); //Define the content type as video or mp4 header("Content-Type: video/mp4"); header("Accept-Ranges: bytes"); //Send data to the user's browser fpassthru($video); //Close the file here fclose($video); ?>
输出
这将导致以下结果:
# The output of this code will be streaming the video "video.mp4" directly in the browser's video player.
注意
在调用fpassthru()之前,务必使用 header() 等函数创建正确的标头,以定义内容类型并开始必要的操作,例如文件下载或内联显示。
总结
fpassthru()方法将文件内容直接流式传输到浏览器或输出缓冲区,此函数的特性使其成为管理文件下载、流式传输视频或类似场景的 Web 应用程序的有用工具。