gpt4 book ai didi

PHP文件下载问题

转载 作者:行者123 更新时间:2023-12-03 23:59:09 24 4
gpt4 key购买 nike

我目前在用户下载存储在我的服务器上的文件时遇到了一些问题。我将代码设置为在用户点击下载按钮后自动下载文件。它适用于所有文件,但当大小超过 30 MB 时就会出现问题。用户下载有限制吗?另外,我提供了我的示例代码,想知道是否有比使用 PHP 函数“file_get_contents”更好的做法。

谢谢大家的帮助!

$path = $_SERVER['DOCUMENT_ROOT'] . '../path/to/file/';
$filename = 'filename.zip';
$filesize = filesize($path . $filename);
@header("Content-type: application/zip");
@header("Content-Disposition: attachment; filename=$filename");
@header("Content-Length: $filesize")
echo file_get_contents($path . $filename);

最佳答案

file_get_contents()将整个文件加载到内存中——使用它的日志。

而且,在 PHP 中,脚本可以使用的内存量是有限的(参见 memory_limit) -- 这可能解释了您的下载脚本不适用于大文件。 p>


使用readfile() ,相反,可能是更好的选择:它将读取文件,并将其内容直接发送到输出缓冲区。

这意味着:

  • 没有将整个文件加载到内存中
  • 不必回显您在内存中加载的内容。

只需使用这样的东西就可以了:

$path = $_SERVER['DOCUMENT_ROOT'] . '../path/to/file/';
$filename = 'filename.zip';
$filesize = filesize($path . $filename);
@header("Content-type: application/zip");
@header("Content-Disposition: attachment; filename=$filename");
@header("Content-Length: $filesize")
readfile($path . $filename);


(顺便说一句:你真的想用 @ 运算符以这种方式消除错误吗?另一种解决方案可能是不显示它们,而是将它们记录到一个文件中——参见 display_errorslog_errorserror_log )

关于PHP文件下载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624039/

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