输出文件 readfile

(PHP 4, PHP 5, PHP 7)

readfile — 输出文件

说明

readfile(string $filename [, bool $use_include_path= false [, resource $context ]]): int

读取文件并写入到输出缓冲。

参数

filename

要读取的文件名。

use_include_path

想要在include_path中搜索文件,可使用这个可选的第二个参数,设为TRUE

context

Stream 上下文(context)resource

返回值

返回从文件中读入的字节数。如果出错返回FALSE并且除非是以 @readfile()形式调用,否则会显示错误信息。

范例

Example #1 使用readfile()强制下载

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>

以上例程的输出类似于:

打开 / 保存对话框

淘宝 adsense 商品推荐

谷歌 admob Adsense 代收Pin码 美国 香港 丰富地址代收 商务服务

价格:50元

注释

readfile()自身不会导致任何内存问题。 如果出现内存不足的错误,使用ob_get_level()确保输出缓存已经关闭。
如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见fopen()。各种 wapper 的不同功能请参见支持的协议和封装协议,注意其用法及其可提供的预定义变量。
在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见Streams

参见

fpassthru()- 输出文件指针处的所有剩余数据

file()- 把整个文件读入一个数组中

fopen()- 打开文件或者 URL

include- include

require- require

virtual()- 执行 Apache 子请求

file_get_contents()- 将整个文件读入一个字符串

支持的协议和封装协议