PHP文件上传和检测文件大小

时间:2014-02-07 20:22:28

标签: php file-upload

我有一个允许用户上传文件的表单,但我在检测过大的文件时遇到问题。

我在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的文件?如果发生这种情况,我需要显示有效的用户消息。

感谢。

2 个答案:

答案 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
}