【问题标题】:How to avoid: Warning: POST Content-Length of 47820076 bytes exceeds the limit of 8388608 bytes in Unknown on line 0如何避免:警告:47820076 字节的 POST Content-Length 超出第 0 行 Unknown 中 8388608 字节的限制
【发布时间】:2013-06-20 07:53:11
【问题描述】:

我正在将图像文件发布到服务器,一切都很好。但是,如果用户发布更大的内容,我会收到此警告。我能做些什么来避免这个警告?

我不想要隐藏警告或增加帖子大小的解决方案。我想要一些可以阻止请求将文件完全上传到服务器并捕获该警告的东西。

【问题讨论】:

  • 首先唯一可以阻止请求发生的是浏览器。由于 HTML 没有提供一种方法来指示浏览器施加限制,因此您很不走运。
  • 您可以在 jQuery 中检查文件大小并阻止表单提交。
  • @ash - 这可能是可能的.. 但这个问题用 PHP 而不是 jQuery 标记..
  • 我知道,但他想知道一种解决方案,该解决方案可以完全阻止上传,而服务器不会发出警告。在这种情况下,唯一的选择是从客户端而不是服务器端阻止它。
  • jQuery 可能是一个解决方案,对。问题一:文件是上传到服务器还是超过php.ini指定的大小就丢弃?

标签: php


【解决方案1】:

这对我有用。似乎当 PHP 看到一个太大的文件时,会删除所有 POST 数据。所以这个代码片段对我有用:

if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_POST) < 1 ) {
    $_SESSION['error'] = 'File upload size exceeded';
    header('Location: index.php');
    return;
}

当然,您的页面应该设计为不提交没有输入参数的空 POST 页面。

【讨论】:

    【解决方案2】:

    您可以做的一件事是在 HTML 表单上设置最大尺寸。

    <input type="hidden" name="MAX_FILE_SIZE" value="4194304" /> 
    

    它不是防弹的,但它有一些影响。为什么这不太好在this comment 中进行了解释 - 它仅由 PHP 进行检查,因此上传将开始并继续直到达到此限制。

    我的建议是您可以将它与 javascript 解决方案一起使用,如 here 所述。当然,它只有在启用 javascript 时才有效。

    【讨论】:

    • 该设置无法覆盖 php.ini/httpd.conf 设置。让人们感觉更好,这基本上是无用的绒毛。否则任何人都可以通过摆弄浏览器中的 html 来轻松绕过服务器端限制。
    • @MarcB 嗯,它没有覆盖任何东西,它是一个额外的限制?
    • 充其量只是提示浏览器不允许超过该大小的任何内容。但在现实世界中,它几乎没用。
    • @MarcB 如果您不熟悉它,请在提出此类声明之前阅读它。这不是对浏览器的提示,它是 PHP 的功能之一。
    猜你喜欢
    • 2012-07-29
    • 2013-03-24
    • 2013-05-16
    • 2016-12-22
    • 2012-10-14
    • 2013-05-16
    • 2020-12-04
    • 2012-07-28
    相关资源
    最近更新 更多