PHP文件下载问题

2023-12-26

我目前在用户下载存储在我的服务器上的文件时遇到一些问题。我设置了代码,以便在用户点击下载按钮后自动下载文件。它适用于所有文件,但当大小超过 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() http://fr.php.net/file_get_contents会将整个文件加载到内存中——使用它的日志。

而且,在 PHP 中,脚本可以使用的内存量是有限的(see memory_limit https://www.php.net/manual/en/ini.core.php#ini.memory-limit)-- 这可能解释您的下载脚本不适用于大文件。


Using [**`readfile()`**][3], instead, might be a better choice : it will read the file, and directly send its content to the output buffer.

这意味着 :

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

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

$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);

*(BTW : do you really want to silence errors this way, with the `@` operator ? Another solution could be to not display them, but log them to a file -- see [`display_errors`][4], [`log_errors`][5], and [`error_log`][6])*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP文件下载问题 的相关文章

  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 所有 PHP 相等比较都是对称的吗?

    Is a b总是等价于 b a 我认为在 JavaScript 中 由于强制转换 有一些奇怪的情况并非如此 I think ide https stackoverflow com questions 4752579 are all php
  • Ajax 没有将我重定向到下一页

    我正在尝试将单击的图像的 ID 传递到下一页 当我开发代码时 它没有将我重定向到下一页 当我单击 F12 并检查网络中的 POST 时 它显示变量已正确传递到下一页 如附图所示 但它没有将我重定向到下一页 所以现在我知道变量在下一页中正确传
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • PHP print_r() 中 _r 的含义是什么?

    我见过这个答案 https stackoverflow com questions 13103410 what does r suffix mean就这样 但我不确定它对于 PHP 是否相同 如果是 可重入的含义是什么 From PHP n
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • ActiveSupport::MessageVerifier::InvalidSignature

    我正在尝试创建一个表单 用户可以在其中编辑现有视频标题和说明 发送 PATCH 请求时 出现以下错误 StackOverflow 上的另一篇文章说 如果发送字符串而不是对象 则会导致错误 但当我控制台记录它时 我看到一个对象 有什么想法吗
  • Socket.Poll 在不同机器上的延迟差异很大

    我继承了一个使用套接字的 net 2 0 客户端应用程序 服务器在 iSeries 上运行 我的计算机尝试使用客户端应用程序但遇到延迟 在遇到 滞后 的计算机上 我确定 Socket Poll 方法花费的时间更长 我认为 我是这样知道的 M
  • 哪个 OJDBC 驱动程序适用于 Java 6?

    我们当前使用的是 ojdbc14 jar 我们应该使用 ojdbc6 jar 吗 更新 正在使用Oracle 10g 如果您使用 java6 则可以 并且应该 使用 ojdbc6 jar 如果它与您的数据库兼容 资源 oracle com
  • 替换照片中除现有黑白像素之外的所有颜色

    我想要一种将照片的所有像素更改为白色的方法 除了照片中已有的白色或黑色像素之外 我尝试使用 PIL 但找不到它 我想要将照片的所有像素更改为白色的方法 除了照片中已经存在的白色或黑色像素 所以基本上你想将除黑色之外的所有像素更改为白色 对吧
  • SQL Server:存储过程变得非常慢,原始 SQL 查询仍然非常快

    我们正在努力解决一个奇怪的问题 当原始 SQL 执行得相当快时 存储过程变得非常慢 我们有 SQL Server 2008 R2 Express Edition SP1 10 50 2500 0 其中包含多个数据库 一个数据库 大小约为 7
  • Grails - 具有级联删除的同一类的多个belongsTo

    这是针对 Grails 用户的 我在 grails 用户邮件列表上询问过这个问题 但我想既然我已经为此奋斗了几天 我应该撒尽可能广的网 我在尝试建模两个人之间的关系时遇到一些困难 另一个对象 不同类型 中相同类型的对象引用 两个物体 作为我
  • Java虚拟机如何实现“happens-before”内存模型?

    Java 的内存模型基于 先于发生 关系 该关系强制执行规则 但也允许在缓存失效方面优化虚拟机的实现 例如以下情况 thread A private void method code before lock synchronized loc
  • 如何修复 Python Mechanize 中的编码?

    这是示例代码 from mechanize import Browser br Browser page br open http hunters tclans ru news php readmore 2 br form br forms
  • ASP MVC 3 中一个视图中的两个模型

    我有 2 个型号 public class Person public int PersonID get set public string PersonName get set public class Order public int
  • 从 GCP 设置文档运行“Hello Cloud Run with Python”时,日志中出现“[CRITICAL] WORKER TIMEOUT”

    继教程在这里 https codelabs developers google com codelabs cloud run hello python3我有以下2个文件 app py from flask import Flask requ
  • 如何根据其他列的条件用另一列的值填充列?

    假设我们在 pandas 中有一个数据框 如下所示 col1 col2 col3 col4 22 Nan 23 56 12 54 22 36 48 Nan 2 45 76 32 13 6 23 Nan 43 8 67 54 56 64 16
  • 如何在Vue中加载外部CSS

    我创建了一个Vue项目与Typescript具有类风格的组件 我需要包含一些外部 CSS 文件 例如来自Amazon S3 CSS 似乎没有加载 在网络部分我可以看到它 我建议你使用preprocessor Install SASS npm
  • 如何让 wpf 工具包数据网格在绑定到数据集时显示新行

    有没有办法获取wpf工具包DataGrid当绑定到 a 时显示新行DataSet 换句话说 我有一个DataGrid 我已经设置了它的ItemsSource to a DataTable 一切似乎都工作正常 除了我无法让网格显示我添加到的行
  • 使用 asynctask 加载图像时 Android 列表视图中的奇怪行为

    我希望任何人都可以帮助我解决我遇到的 ListView 问题 昨天我一直在用头撞铁墙 因为我不知道问题出在哪里 这本来不是我的项目 这使得它变得更加困难 我有一个列表视图 我想在其中加载联系人行 在每行的左侧 我想 下载 异步加载图像 为此
  • 在 OpenCV 3.0 中计算密集 SIFT 特征

    从 3 0 版本开始 DenseFeatureDetector 不再可用 有人可以告诉我如何在 OpenCV 3 0 中计算 Dense SIFT 特征吗 我在文档中找不到它 预先非常感谢您 您可以传递一个列表cv2 KeyPoints t
  • 为什么服务器端Javascript没有被广泛使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 拦截并过滤HTTP请求

    我想拦截 嗅探传入的 HTTP 请求并过滤 修改它们的内容 在它们到达应用程序之前 Fiddler 似乎有这个功能 但为了集成和可移植性 我宁愿有一些 Java C 库来做到这一点 例如 JPCAP 它拦截 IP 数据包 但是 如上所述 我
  • 如何在条件展开转场中传递数据?

    我尝试建立一个RSS阅读器 在 添加提要 页面上 如果我点击 添加 按钮 我希望检查提要是否已成功添加 如果添加了 则触发unwind segue 并返回主页 如果没有添加 则停留在当前页面 我知道我可以在 添加 按钮上构建 IBActio
  • 如何禁用 Tmux 中的键绑定

    使用 Tmux 和 Vim 有时很痛苦 对我来说 冲突之一是Control S 我在 Vim 中使用它来分割打开缓冲区 但是当使用 Tmux 时 嗯 Tmux 用它做了一些愚蠢的事情 我不明白其目的是什么 但基本上 当C s在 Tmux 中
  • PHP文件下载问题

    我目前在用户下载存储在我的服务器上的文件时遇到一些问题 我设置了代码 以便在用户点击下载按钮后自动下载文件 它适用于所有文件 但当大小超过 30 MB 时 就会出现问题 用户下载有限制吗 另外 我已经提供了示例代码 并且想知道是否有比使用