我刚刚在下面测试了这个下载脚本。下载工作正常,但下载的zip或rar存档总是损坏,无法打开。我在本地开发服务器以及我的主机帐户上测试过它。
我只是想了解它是如何工作的,但我并不理解它。
感谢所有帮助!
测试代码:
<?php
$is_logged_in = 1;
$path_to_file = 'downloads/tes.zip';
$file_name = 'test.zip';
if ($is_logged_in == 1)
{
header("X-Sendfile: $path_to_file");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$file_name\"");
exit;
}
?>
<h1>Permission denied</h1>
<p>Please Login first!</p>
答案 0 :(得分:1)
您最有可能在文件中附加/附加了某些内容。尝试使用buffering并清理。
<?php
ob_start();
$is_logged_in = 1;
$path_to_file = 'downloads/tes.zip';
$file_name = 'test.zip';
if ($is_logged_in == 1)
{
$fp = fopen($path_to_file, 'rb');
if(is_resource($fp))
{
ob_clean();
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($path_to_file));
header("Cache-Control: max_age=0");
header("Content-Disposition: attachment; filename=\"$file_name\"");
header("Pragma: public");
fpassthru($fp);
die;
}
} else {
echo "<h1>Permission denied</h1>";
echo "<p>Please Login first!</p>";
}
答案 1 :(得分:0)
您是否已将网络服务器(特别是Apache)配置为加载mod_xsendfile?如果没有安装该模块,您的脚本基本上什么都不做。