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