0

我试图弄清楚如何检测文件是否大于 php.ini 中允许的最大值。当我发布大于最大大小的文件时,帖子为空。我试过动态设置帖子最大大小和上传最大大小,但无济于事。我在 Zend 框架中工作,但在 application.ini 文件中看不到任何限制文件上传大小的内容。

如果我做:

if ($this->getRequest()->getPost()) {
    print_r($_FILES); die();
}

如果大小小于 php.ini 限制,则脚本会终止。如果文件很大,则帖子为空die()且未命中。那么我有什么遗漏吗?如果帖子为空,如何检测文件是否大于限制?

解决了:

if (array_key_exists('CONTENT_LENGTH', $_SERVER) && !$_FILES && !$_POST) {
    die();
}
4

3 回答 3

3
  • 如果超过键包含 1 ( upload_max_filesizeUPLOAD_ERR_INI_SIZE )error

  • 如果超过post_max_size$_POST$_FILES都是空的。

除此之外,请确保您能够在开发过程中看到所有错误消息。

于 2013-06-11T17:04:30.400 回答
2

PHP 文件上传最大大小由 php.ini 中的 3 个配置值决定,即 upload_max_filesize、post_max_size 和 memory_limit。您可以通过此代码段获取允许上传的最大文件大小:

$max_upload = (int)(ini_get('upload_max_filesize'));
$max_post = (int)(ini_get('post_max_size'));
$memory_limit = (int)(ini_get('memory_limit'));
$upload_mb = min($max_upload, $max_post, $memory_limit);
if(($_FILES["file"]["size"] > $upload_mb)){die();}else{ echo "smaller value"}
于 2013-06-11T17:02:25.103 回答
2

用于ini_set('post_max_size', '8M');将最大发布大小设置为 8 兆字节。

用于ini_set('upload_max_filesize', '8M');将文件的单个大小设置为 8 MB - 如果您上传多个文件,您仍然可以发布超过 8 MB 的文件,这可能是可取的。

如果文件“太大”,您仍然会收到已发布的文件,$_FILES但会有错误代码,如果您查找临时文件,则不会在那里。

$_FILES["file"]["error"]可以具有以下值之一:http: //php.net/manual/en/features.file-upload.errors.php

通常你会写一些switch case语句来处理错误代码。

于 2013-06-11T17:03:42.827 回答