Php 如何检测文件上载是否大于允许的最大值
我试图找出如何检测文件是否大于php.ini中允许的最大值。当我发布一个大于最大大小的文件时,帖子是空的。我已经尝试过动态设置post max size和upload max size,但没有效果。我在Zend framework中工作,但在application.ini文件中没有看到任何限制文件上载大小的内容 如果我这样做:Php 如何检测文件上载是否大于允许的最大值,php,zend-framework,file-upload,Php,Zend Framework,File Upload,我试图找出如何检测文件是否大于php.ini中允许的最大值。当我发布一个大于最大大小的文件时,帖子是空的。我已经尝试过动态设置post max size和upload max size,但没有效果。我在Zend framework中工作,但在application.ini文件中没有看到任何限制文件上载大小的内容 如果我这样做: if ($this->getRequest()->getPost()) { print_r($_FILES); die(); } 当大小小于php.
if ($this->getRequest()->getPost()) {
print_r($_FILES); die();
}
当大小小于php.ini限制时,脚本将终止。如果文件较大,则post为空,并且不会命中die()
。我有什么遗漏吗?如果帖子为空,如何检测文件是否大于限制
已解决:
if (array_key_exists('CONTENT_LENGTH', $_SERVER) && !$_FILES && !$_POST) {
die();
}
PHP文件上传最大大小由PHP.ini中的3个配置值决定,即上传最大文件大小、上传最大文件大小和内存限制。您可以通过此代码段获取上载时允许的最大文件大小:
$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"}
使用ini_集('post_max_size','8M')
将最大post大小设置为8 MB
使用ini_集('upload_max_filesize','8M')
将文件的单个大小设置为8兆字节-如果上载多个文件,您仍然可以发布超过8MB的文件,这是可取的
如果文件“太大”,您仍然会在$\u FILES
中获得发布的文件,但如果您查找它,将出现错误代码,临时文件将不在那里
$\u文件[“文件”][“错误”]
可以具有以下值之一:
通常,您会编写一些开关案例语句来处理错误代码。
- 如果超过
upload\u max\u filesize
则error
键包含1()
- 如果超过
post\u max\u大小
,则$\u post
和$\u文件
均为空
除此之外,请确保在开发时能够看到所有错误消息。您不需要设置内存限制,这毫无意义。只有当您要将文件完全读入内存时,您才可以限制upload\u max\u filesize
。