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