一次下载链接和大文件

时间:2014-01-29 16:39:11

标签: php time download

我正在使用这个脚本:

http://www.webvamp.co.uk/blog/coding/creating-one-time-download-links/

允许用户下载文件(一次)。小文件一切正常。现在我正在尝试做同样的事情但是文件大1.2 GB。而不是强制用户下载文件,脚本显示文件的相对补丁!有没有办法修改脚本或服务器配置的错误?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

寻找代码我认为由于内存限制它在大文件上失败。脚本在发送之前通过file_get_contents()在内存中读取整个文件。我怀疑,> 1Gb文件导致内存问题。 尝试在download.php脚本中替换以下行:

            //get the file content
            $strFile = file_get_contents($strDownload);

            //set the headers to force a download
            header("Content-type: application/force-download");
            header("Content-Disposition: attachment; 

filename=\"".str_replace(" ", "_", $arrCheck['file'])."\"");

                    //echo the file to the user
                    echo $strFile;

为:

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($strDownload));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($strDownload));
    ob_clean();
    flush();
    readfile($strDownload);

这可能有所帮助。

手册注意: readfile()即使在自行发送大文件时也不会出现任何内存问题