【问题标题】:empty $_POST and $_FILE variable when uploading large files上传大文件时为空 $_POST 和 $_FILE 变量
【发布时间】:2011-10-24 20:00:18
【问题描述】:

我试图上传一个大小为 20MB 的文件。现在默认表单上传大小为 8MB。当我上传这样的文件时,我得到 $_POST 和 $_FILE 变量为空。现在我想检查文件大小。如果我将这两个变量都设为空,我该如何进行这样的检查?请给我建议

【问题讨论】:

  • 还有...你的 php.ini 上传限制是多少?
  • 如果表单上传限制设置为低于您尝试上传的文件大小,浏览器肯定不会提交表单,因为这是客户端检查...即使它确实,请注意文件位于$_FILES,而不是$_FILE - 这是您的问题,还是只是错字?另请注意,即使上传成功,如果表单中唯一的内容是文件输入,$_POST 为空。

标签: php


【解决方案1】:

除非出现任何代码错误,否则您的20MB 很可能超出了您的上传限制。 从您的 php.ini 文件中永久更改此设置。

使用

ini_set("upload_max_filesize", "30M");

仅为该会话设置最大上传大小。而对于 POST

使用这个

ini_set("post_max_size", "30M");

检查尺寸

   echo ini_get("post_max_size") . "\n";
   echo ini_get("upload_max_filesize");

【讨论】:

  • 您不应该为自己的帖子点赞,这被认为违反了这里的规则,您可能会被禁止。你知道我在说什么
  • @genesis 好的。对不起,不会再这样做了。
  • @genesis 是的。如何加入帐户或删除帐户?
【解决方案2】:

不知道你真正想要什么。但是您可以使用以下方法探测收到的内容大小:

  $_SERVER["CONTENT_LENGTH"]

这应该说明 POST 请求正文的大小。 (在中止上传的情况下,该数字可能高于实际接收的内容。)

【讨论】:

    【解决方案3】:

    checkout php://input,它允许的 8mb 部分应该在那里。

    例如echo file_get_contents('php://input');

    【讨论】:

      【解决方案4】:

      您可以动态设置上传的最大文件大小。

      在您尝试上传文件的上传功能中写下以下语句。 这会将限制提高到 50 MB

      ini_set("upload_max_filesize", "50M");
      

      如果要检查文件变量,可以使用替代 HTTP_POST_FILES

      $theFileSize = $HTTP_POST_FILES['file']['size'];
      

      希望对你有所帮助。

      谢谢。

      【讨论】:

      • 我的上传和发布失败。我检查了 $_FILES 和 $_POST 变量。两者都不包含任何内容。甚至 $HTTP_POST_FILES 都失败了
      【解决方案5】:

      使用MAX_FILE_SIZE作为隐藏输入字段,如果文件大于限制,这将停止用户等待并且不会执行您的代码,因此变量不会为空...

      MAX_FILE_SIZE 隐藏字段(以字节为单位)必须位于 文件输入字段,它的值是接受的最大文件大小 php。应始终使用此表单元素,因为它可以为用户节省 等待传输大文件的麻烦只是发现 它太大,传输失败。请记住:愚弄这个 在浏览器端设置非常简单,所以不要依赖文件 此功能阻止了更大的尺寸。它只是一个 为应用程序客户端的用户提供便利功能。 但是,最大大小的 PHP 设置(在服务器端), 不能被愚弄。

      http://www.php.net/manual/en/features.file-upload.post-method.php

      【讨论】:

      • 哪些浏览器使用了隐藏字段?
      • 所有浏览器都使用隐藏字段,它与表单一起发送。
      • 除非您的意思是浏览器理解MAX_FILE_SIZE 字段,在这种情况下答案是它是服务器端检查,如果上传的文件大小达到该大小,PHP 将停止脚本。不同之处在于,PHP 可以在上传时从缓冲区中检查它,而不是等待整个文件上传后才知道它的完整大小。
      • 我不明白.. 如果这是服务器端检查,为什么 PHP 不查看 ini 设置而只使用它呢?
      猜你喜欢
      • 2016-04-16
      • 2016-11-10
      • 2011-12-12
      • 2017-05-06
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多