繁体   English   中英

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

[英]how to download large files using PHP headers

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

我正在使用PHP。

我的问题是,当使用php 标头强制文件下载时,服务器的内存消耗很大,尽管我在下载过程中从文件中提取了很多 ,这意味着当5个用户同时下载大文件时,服务器将停止工作。

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

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

什么是解决方案?

您可以将文件存储在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具有非常大的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM