(PHP 4, PHP 5)
readfile — 输出一个文件
$filename
[, bool $use_include_path
[, resource $context
]] )读入一个文件并写入到输出缓冲。
返回从文件中读入的字节数。如果出错返回
FALSE
并且除非是以
@readfile() 形式调用,否则会显示错误信息。
如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 Supported Protocols and Wrappers,注意其用法及其可提供的预定义变量。
如果也想在
include_path
中搜索文件,可以使用可选的第二个参数并将其设为 TRUE
。
Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。 有关 上下文(Context) 的说明参见 Streams。
参见 fpassthru(),file(),fopen(),include(),require(),virtual(),file_get_contents() 和Supported Protocols and Wrappers。
filename
The filename being read.
use_include_path
You can use the optional second parameter and set it to TRUE
, if
you want to search for the file in the include_path, too.
context
A context stream resource.
Returns the number of bytes read from the file. If an error
occurs, FALSE
is returned and unless the function was called as
@readfile(), an error message is printed.
Example #1 Forcing a download using 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('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
以上例程的输出类似于:
如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 Supported Protocols and Wrappers,注意其用法及其可提供的预定义变量。
Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。 有关 上下文(Context) 的说明参见 Streams。