我正在使用这个脚本:
http://www.webvamp.co.uk/blog/coding/creating-one-time-download-links/
允许用户下载文件(一次)。小文件一切正常。现在我正在尝试做同样的事情但是文件大1.2 GB。而不是强制用户下载文件,脚本显示文件的相对补丁!有没有办法修改脚本或服务器配置的错误?
感谢您的帮助!
答案 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()即使在自行发送大文件时也不会出现任何内存问题