fpassthru
(PHP 4, PHP 5, PHP 7, PHP 8)
fpassthru — 輸出檔案指針處的所有剩餘數據
說明
fpassthru(resource
$handle
): int將給定的檔案指針從目前的位置讀取到 EOF 並把結果寫到輸出緩衝區。
如果已經向檔案寫入數據,就必須呼叫 rewind() 來將檔案指針指向檔案頭。
如果既不修改檔案也不在特定位置檢索,只想將檔案的內容下載到輸出緩衝區,應該使用 readfile(),這樣可以省去 fopen() 呼叫。
返回值
如果發生錯誤, fpassthru() 返回 false
。否則
fpassthru() 返回從 handle
讀取並傳遞到輸出的字元數目。
範例
示例 #1 對二進制檔案使用 fpassthru()
<?php
// 以二進制格式打開檔案
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// 發送合適的報頭
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// 發送圖片並終止指令碼
fpassthru($fp);
exit;
?>
註釋
注意:
當在 Windows 系統中將 fpassthru() 用於二進制檔案,要確保在用 fopen() 打開檔案時在 mode 中附加了
b
來將檔案以二進制方式打開。鼓勵在處理二進制檔案時使用
b
標誌,即使系統並不需要,這樣可以使指令碼的移植性更好。