在PHP 開發中,經常需要將服務器上的壓縮文件(如ZIP、GZ 等)直接發送到瀏覽器,供用戶下載。 函數是一個高效的選擇,它可以從文件指針讀取文件內容,並直接輸出到瀏覽器,而無需將整個文件加載到內存中。本文將介紹一些實用方法及注意事項。
" ; echo "fpassthru 的基本語法如下:
" ; echo "int fpassthru ( resource \$handle )" ; echo "
它會讀取\$handle指向的文件直到文件結束,並將數據直接輸出到瀏覽器,返回輸出的字節數。
" ; echo "示例代碼:
" ; echo "
\$file = 'example.zip';
if (file_exists(\$file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=\"' . basename(\$file) . '\"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize(\$file));
\$fp = fopen(\$file, 'rb');
if (\$fp) {
fpassthru(\$fp);
fclose(\$fp);
exit;
}
}
" ; echo ""使用fpassthru可以高效地將服務器上的壓縮文件發送到瀏覽器,避免內存佔用過高。在使用過程中,需要注意HTTP 頭設置、輸出緩衝區處理以及文件權限等問題。掌握這些技巧,可以讓文件下載功能更加穩定和高效。
" ; // 文章正文結束 ?>