如何使用PHP标头下载大文件

时间:2013-09-08 12:00:54

标签: php memory header downloading-website-files

我有大型文件的“文件下载中心”(100MB - 2GB)。

我正在使用PHP。

我的问题是当使用php 标题强制下载文件时服务器内存消耗非常多,虽然我在下载过程中从文件中生成,这意味着什么时候5个用户在下载大文件的同时服务器将停止工作。

如何让用户从我的服务器上下载大文件而没有任何问题。

例如,如果我使用header("location : path/to/files/2GB.zip");,问题就完成了。但这是我不需要的,因为我不需要为用户提供直接链接到文件的安全性。

什么是解决方案?

1 个答案:

答案 0 :(得分:0)

您可以将文件存储在Web路径之外,然后在下载时包含这些文件,使用header函数将其部署到用户。这有点过于杀戮,但它有效:

$getFiles = fread($FILEHANDLE,$FILESIZE);       

header("Content-Transfer-Encoding: Binary");
header("Content-length: ".$FILESIZE."");
header("Content-type: ".$FILETYPE."");
header('Content-Disposition: attachment; filename="'.$FILENAME.'"');

echo $getFiles;

在您传输文件之前,当您在服务器上读取文件时,会消耗更多内存,但您的下载程序永远不会知道文件的存储位置。因为显而易见的原因,YMMV文件非常大。