6

我有一个上传表单,其中包含要上传的文件。我遇到的问题是,即使没有上传文件, if(isset($_FILES)) OR 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!
}
4

1 回答 1

11

作为一个超全局的,$_FILES大概总是设置,不管上传的文件是否存在。

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

这应该可靠地工作:

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

(isset() 是为了防止“未定义索引”通知。)

顺便说一句,你这样做是为了什么?

$_FILES = $HTTP_POST_FILES;
于 2010-03-30T22:04:12.150 回答