isset和!空不通过检查上传的文件

时间:2010-03-30 22:02:20

标签: php file-upload isset

我有一个上传表单,上传了一个文件。我遇到的问题是,即使没有上传文件,if(isset($ _ FILES))或者if(!empty($ _ FILES))仍然成功通过:

$_FILES = $HTTP_POST_FILES;
if($_POST['type'] == 'photo' && isset($_FILES)){
// returns true even if no file is uploaded. What am I missing!
}

1 个答案:

答案 0 :(得分:11)

作为超全球,$_FILES可能始终设置,无论是否存在上传的文件。

检查您期望的文件上传并查看大小字段。 (显然根据手册中的用户贡献说明,如果表单包含upload元素,即使没有选择文件,偶数isset($_FILES["my_file_name"])也可能返回true。

这应该可靠地运作:

if($_POST['type'] == 'photo' && 
   ((isset($_FILES["my_file_name"]["size"]) && 
    ($_FILES["my_file_name"]["size"] > 0)) ){

(isset()用于防止“未定义的索引”通知。)

顺便说一下,你做了什么?:

$_FILES = $HTTP_POST_FILES;