【问题标题】: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 文件非常大,原因很明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      相关资源
      最近更新 更多