上传大文件时清空$ _POST和$ _FILE变量

时间:2011-10-24 11:53:39

标签: php

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

5 个答案:

答案 0 :(得分:4)

除非出现任何代码错误,否则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");

答案 1 :(得分:2)

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

  $_SERVER["CONTENT_LENGTH"]

这应该告诉POST请求主体有多大。 (如果中止上传,该数字可能高于实际收到的内容。)

答案 2 :(得分:1)

结帐php://输入,允许的8mb部分应该在那里。

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

答案 3 :(得分:1)

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

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

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

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

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

希望这可以帮助你。

感谢。

答案 4 :(得分:1)

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

  

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

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