gpt4 book ai didi

php - 使用 PHP 提供大文件服务

转载 作者:行者123 更新时间:2023-12-02 22:59:55 24 4
gpt4 key购买 nike

因此,我尝试通过 PHP 脚本提供大文件,它们不在可通过 Web 访问的目录中,因此这是我能想到的提供对它们的访问的最佳方式。

我能想到的提供该文件的唯一方法是将其加载到内存中(fopen、fread 等),将 header 数据设置为正确的 MIME 类型,然后仅回显该文件的全部内容文件。

问题是,我必须将这些大约 700MB 的文件一次性加载到内存中,并将整个文件保留在那里直到下载完成。如果我可以在下载时传输我需要的部分,那就太好了。

有什么想法吗?

最佳答案

您不需要读取整个内容 - 只需进入一个循环,以 32Kb block 的形式读取它,并将其作为输出发送。更好的是,使用fpassthru这对你来说也有同样的作用......

$name = 'mybigfile.zip';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: application/zip");
header("Content-Length: " . filesize($name));

// dump the file and stop the script
fpassthru($fp);
exit;

如果您使用readfile,行数甚至更少 ,不需要 fopen 调用...

$name = 'mybigfile.zip';

// send the right headers
header("Content-Type: application/zip");
header("Content-Length: " . filesize($name));

// dump the file and stop the script
readfile($name);
exit;

如果你想变得更可爱,可以支持Content-Range header 允许客户端请求文件的特定字节范围。这对于向 Adob​​e Acrobat 提供 PDF 文件特别有用,Adobe Acrobat 仅请求呈现当前页面所需的文件 block 。这有点复杂,但是see this for an example .

关于php - 使用 PHP 提供大文件服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com