在 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 头设置、输出缓冲区处理以及文件权限等问题。掌握这些技巧,可以让文件下载功能更加稳定和高效。
"; // 文章正文结束 ?>