Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载大文件时,空的$\u POST和$\u FILE变量_Php - Fatal编程技术网

Php 上载大文件时,空的$\u POST和$\u FILE变量

Php 上载大文件时,空的$\u POST和$\u FILE变量,php,Php,我试图上传一个20MB大小的文件。现在默认的表单上传大小是8MB。当我上传这样一个文件时,$\u POST和$\u file变量为空。现在我想检查一下文件大小。如果这两个变量都为空,我怎么能进行这样的检查??请给我一些建议php://input,允许的8mb部分应该在那里 例如echo文件\u获取\u内容('php://input');您可以动态设置上载的最大文件大小 在你的上传函数中写下下面的语句,在这里你试图上传文件。 这将把限制提高到50MB ini_set("upload_max_fil

我试图上传一个20MB大小的文件。现在默认的表单上传大小是8MB。当我上传这样一个文件时,$\u POST和$\u file变量为空。现在我想检查一下文件大小。如果这两个变量都为空,我怎么能进行这样的检查??请给我一些建议php://input,允许的8mb部分应该在那里


例如
echo文件\u获取\u内容('php://input');

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

在你的上传函数中写下下面的语句,在这里你试图上传文件。 这将把限制提高到50MB

ini_set("upload_max_filesize", "50M");
如果要检查文件变量,可以使用可选的HTTP\U POST\U文件

$theFileSize = $HTTP_POST_FILES['file']['size'];
希望这能对你有所帮助


谢谢。

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

最大文件大小隐藏字段(以字节为单位)必须位于 文件输入字段,其值为可接受的最大文件大小 PHP。在保存用户信息时,应始终使用此表单元素 等待一个大文件被传输却发现它的麻烦 它太大,传输失败。记住:愚弄这个 在浏览器端进行设置非常简单,因此永远不要依赖具有 此功能阻止了更大的大小。这只不过是一个例子 方便应用程序客户端用户的功能。 但是,最大大小的PHP设置(在服务器端), 不能被愚弄


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

  $_SERVER["CONTENT_LENGTH"]

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

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

使用

仅为该会话设置最大上载大小。邮递

用这个

ini_set("post_max_size", "30M");
检查尺寸

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

还有…您的php.ini上传限制是多少?如果表单上传限制设置为低于您试图上传的文件大小,那么浏览器肯定不会提交表单,因为这是客户端检查。。。即使是这样,请注意这些文件是在
$\u文件
中找到的,而不是在
$\u文件
中找到的-这是您的问题,还是仅仅是打字错误?还要注意的是,即使上传成功,
$\u POST
也将为空,如果表单中只有文件输入。哪些浏览器使用隐藏字段?所有浏览器都使用隐藏字段,它与表单一起发送。除非您指的是什么浏览器理解
MAX\u FILE\u SIZE
字段,在这种情况下,答案是这是服务器端检查,否则如果上传的文件大小达到该大小,PHP将停止脚本。不同之处在于,PHP可以在上传时从缓冲区中进行检查,而不是等到上传完整个文件后才知道文件的大小。我不明白。。如果这是一个服务器端检查,为什么PHP不查看ini设置并使用它呢?我的上传和post一起失败。我检查了$\u文件和$\u POST变量。两者都不包含任何内容。即使$HTTP_POST_文件失败,你也不应该更新你自己的帖子,这被认为是违反规则的,你可能会被禁止。你知道我在说什么吗about@genesis好啊对不起,我不会再那样做了。@genesis是的。如何加入或删除帐户?
   echo ini_get("post_max_size") . "\n";
   echo ini_get("upload_max_filesize");