(PHP 4, PHP 5)
fpassthru — 輸出文件指針處的所有剩余數(shù)據(jù)
說明
int fpassthru ( resource$handle
)
將給定的文件指針從當(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ù)目。
范例
Example #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;
?>
注釋
Note:
當(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套接字連接