readfile

(PHP 4, PHP 5, PHP 7, PHP 8)

readfile輸出文件

說(shuō)明

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

讀取文件并寫(xiě)入到輸出緩沖。

參數(shù)

filename

要讀取的文件名。

use_include_path

想要在 include_path 中搜索文件,可使用這個(gè)可選的第二個(gè)參數(shù),設(shè)為 true。

context

Stream 上下文(context) resource

返回值

成功時(shí)返回從文件中讀入的字節(jié)數(shù), 或者在失敗時(shí)返回 false

錯(cuò)誤/異常

失敗時(shí)拋出E_WARNING警告。

范例

示例 #1 使用 readfile() 強(qiáng)制下載

<?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;
}
?>

以上例程的輸出類(lèi)似于:

打開(kāi) / 保存對(duì)話(huà)框

注釋

注意:

readfile() 自身不會(huì)導(dǎo)致任何內(nèi)存問(wèn)題。 如果出現(xiàn)內(nèi)存不足的錯(cuò)誤,使用 ob_get_level() 確保輸出緩存已經(jīng)關(guān)閉。

小技巧

如已啟用fopen 包裝器,在此函數(shù)中, URL 可作為文件名。關(guān)于如何指定文件名詳見(jiàn) fopen()。各種 wapper 的不同功能請(qǐng)參見(jiàn) 支持的協(xié)議和封裝協(xié)議,注意其用法及其可提供的預(yù)定義變量。

上下文流(context stream) resource

參見(jiàn)