fpassthru

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

fpassthru輸出文件指針處的所有剩余數(shù)據(jù)

說明

fpassthru(resource $handle): int

將給定的文件指針從當(dāng)前的位置讀取到 EOF 并把結(jié)果寫到輸出緩沖區(qū)。

如果已經(jīng)向文件寫入數(shù)據(jù),就必須調(diào)用 rewind() 來將文件指針指向文件頭。

如果既不修改文件也不在特定位置檢索,只想將文件的內(nèi)容下載到輸出緩沖區(qū),應(yīng)該使用 readfile(),這樣可以省去 fopen() 調(diào)用。

參數(shù)

handle

文件指針必須是有效的,必須指向由 fopen()fsockopen() 成功打開的文件(并還未由 fclose() 關(guān)閉)。

返回值

如果發(fā)生錯誤, fpassthru() 返回 false。否則 fpassthru() 返回從 handle 讀取并傳遞到輸出的字符數(shù)目。

范例

示例 #1 對二進(jìn)制文件使用 fpassthru()

<?php

// 以二進(jìn)制格式打開文件
$name './img/ok.png';
$fp fopen($name'rb');

// 發(fā)送合適的報頭
header("Content-Type: image/png");
header("Content-Length: " filesize($name));

// 發(fā)送圖片并終止腳本
fpassthru($fp);
exit;

?>

注釋

注意:

當(dāng)在 Windows 系統(tǒng)中將 fpassthru() 用于二進(jìn)制文件,要確保在用 fopen() 打開文件時在 mode 中附加了 b 來將文件以二進(jìn)制方式打開。

鼓勵在處理二進(jìn)制文件時使用 b 標(biāo)志,即使系統(tǒng)并不需要,這樣可以使腳本的移植性更好。

參見

  • readfile() - 輸出文件
  • fopen() - 打開文件或者 URL
  • popen() - 打開進(jìn)程文件指針
  • fsockopen() - 打開一個網(wǎng)絡(luò)連接或者一個Unix套接字連接