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

kal*_*tch 6 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!
}
Run Code Online (Sandbox Code Playgroud)

Pek*_*ica 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)) ){
Run Code Online (Sandbox Code Playgroud)

(isset()是为了防止"未定义的索引"通知.)

顺便说一句,你做了什么?

$_FILES = $HTTP_POST_FILES;
Run Code Online (Sandbox Code Playgroud)