我有一个允许用户上传文件的表单,但我在检测过大的文件时遇到问题。
我在php.ini中设置了以下内容:
upload_max_filesize = 10M
post_max_size = 20M
据我所知,检测文件是否大于配置文件允许的标准方法是检查$_FILES['file_name']['error']
。但是,如果实际文件大于upload_max_filesize
且小于post_max_size
,这仅适用于我。
如果实际文件大小大于post_max_size
,则删除$_FILES
变量并收到日志消息:
PHP警告:POST内容长度xxx字节超出限制 yyy ......
所以问题是:如何检测用户是否正在上传大于post_max_size
的文件?如果发生这种情况,我需要显示有效的用户消息。
感谢。
答案 0 :(得分:0)
我建议您使用set_error_handler()
并检查E_USER_WARNING
错误+相应的消息,然后将其发送给用户,可能通过抛出异常,可能还有其他方式。
答案 1 :(得分:0)
像这样:
$filesize = $_FILES['file']['size'];
$limit = ini_get('post_max_size');
if($filesize > $limit) {
trigger_error("POST Content-Length of $filesize bytes exceeds the limit of $limit bytes.", E_WARNING);
}
else {
// upload file
}