强制在共享服务器上下载大文件



我试图在某人的网站上添加一个大型视频文件(大约300MB)的下载链接,但不幸的是他们在共享主机上(我告诉他们,如果他们得到很多人下载它,他们将不得不升级)。我不希望人们不得不"Save Target As",我通常使用以下代码强制下载:

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,因为我确信我将无法设置内存限制是足够高?

非常感谢,

戴夫

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

$fh = fopen($file, 'rb') or die("Unable to open $file");
while($data = fread($fh, 10240)) { // 10kbyte chunks.
   echo $data;
}
fclose($fh);

相关内容

  • 没有找到相关文章

最新更新