0

我只是在下面测试这个下载脚本。下载工作正常,但下载的 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>
4

2 回答 2

1

您很可能在文件中附加/附加了一些内容。尝试使用缓冲和清洁。

<?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>";
}
于 2011-03-24T00:42:34.517 回答
0

您是否已将您的网络服务器(尤其是 Apache)配置为加载mod_xsendfile?如果没有安装该模块,您的脚本基本上什么都不做。

于 2011-03-24T00:50:49.053 回答