-1

我正在尝试在某人的网站上添加指向大型视频文件(约 300MB)的下载链接,但不幸的是他们在共享主机上(我告诉他们,如果有很多人下载它,他们将不得不升级)。我不希望人们必须“将目标另存为”,我通常使用此代码强制下载:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename={$file}");
header("Content-Transfer-Encoding: binary");
readfile($file);

这适用于较小的文件,但不适用于较大的文件,即使在打开错误后我也没有收到错误和错误日志。我确定这与共享内存限制(或可能超时)有关,但有谁知道我如何强制在共享服务器上下载大文件,最好没有 javascript,因为我确信我不能将内存限制设置为足够高?

非常感谢,

戴夫

4

1 回答 1

0

通常的解决方案是自己做文件输出,让 Web 服务器自己的缓冲区处理事情:

$fh = fopen($file, 'rb') or die("Unable to open $file");
while($data = fread($fh, 10240)) { // 10kbyte chunks.
   echo $data;
}
fclose($fh);
于 2011-09-07T16:11:59.523 回答