【问题标题】:how to download large files using PHP headers如何使用 PHP 头文件下载大文件
【发布时间】:2013-09-08 12:00:53
【问题描述】:
我有大文件(100MB - 2GB)的“文件下载中心”。
我正在使用 PHP。
我的问题是当使用 php headers 强制文件下载时,服务器内存消耗非常多,尽管我在下载过程中从文件中生成 chunks,这意味着当5个用户同时下载大文件服务器将停止工作。
如何让用户从我的服务器下载大文件没有任何问题。
例如,如果我使用header("location : path/to/files/2GB.zip");,问题就解决了。但这是我不需要的,因为出于安全考虑,我不需要为用户提供指向文件的直接链接。
什么是解决方案?
【问题讨论】:
标签:
php
memory
header
downloading-website-files
【解决方案1】:
您可以将文件存储在 Web 路径之外,然后在下载时包含文件,使用标头功能将其部署给用户。这有点过头了,但它确实有效:
$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 文件非常大,原因很明显。