(PHP 4, PHP 5, PHP 7, PHP 8)
fpassthru — 輸出文件指針處的所有剩余數(shù)據(jù)
$handle
): int將給定的文件指針從當前的位置讀取到 EOF 并把結(jié)果寫到輸出緩沖區(qū)。
如果已經(jīng)向文件寫入數(shù)據(jù),就必須調(diào)用 rewind() 來將文件指針指向文件頭。
如果既不修改文件也不在特定位置檢索,只想將文件的內(nèi)容下載到輸出緩沖區(qū),應該使用 readfile(),這樣可以省去 fopen() 調(diào)用。
如果發(fā)生錯誤, fpassthru() 返回 false
。否則
fpassthru() 返回從 handle
讀取并傳遞到輸出的字符數(shù)目。
示例 #1 對二進制文件使用 fpassthru()
<?php
// 以二進制格式打開文件
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// 發(fā)送合適的報頭
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// 發(fā)送圖片并終止腳本
fpassthru($fp);
exit;
?>
注意:
當在 Windows 系統(tǒng)中將 fpassthru() 用于二進制文件,要確保在用 fopen() 打開文件時在 mode 中附加了
b
來將文件以二進制方式打開。鼓勵在處理二進制文件時使用
b
標志,即使系統(tǒng)并不需要,這樣可以使腳本的移植性更好。