$ _FILES为空时究竟是什么意思?

时间:2010-05-25 04:29:58

标签: php error-handling upload

我正在研究PHP上传脚本,在测试我的错误检查时,我试图上传一个17MB的TIFF文件。当我这样做时,$ _FILES数组为空。该脚本适用于我需要它做的事情,即上传JPEG文件。我的解决方案是在继续上传脚本之前测试$ _FILES是否为空。

任何人都可以解释为什么尝试上传TIFF时$ _FILES为空?是我的解决方案,检查$ _FILES是否为空,还可以吗?

这是否与php.ini中的设置有关?

只是为了澄清

我使用以下内容检查$_FILES是否为空:

if(empty($_FILES))
{
    die('$_FILES is empty.');
}

3 个答案:

答案 0 :(得分:7)

是的,upload_max_filesize控制TIFF文件最有可能超出的最大上传大小。默认值为2M。您可以使用以下方式进行测试:

echo ini_get("upload_max_filesize");

编辑:实际上,确切原因post_max_size更可能是{> 3}},总是> = upload_max_filesize:“如果发布数据的大小大于post_max_size,则$ _POST和$ _FILES超全局变量为空。”

答案 1 :(得分:1)

您应该检查$_FILES['file']['error']是否等于0。这表明“成功”。

如果您的文件数组为空,则可能是由于其他一些问题,例如不包括enctype。

尝试执行var_dump($_FILES)并查看内容......

编辑:我知道您可以在php.ini文件中设置max filesize,但我不确定这是否会为您提供空文件数组。我想你会得到一个错误。

答案 2 :(得分:0)

已经发布,它是空的,因为如果失败了。还要检查这样的表单元素:

<input type="hidden" name="MAX_FILE_SIZE" value="-maxsizegoeshereinbytes-" />

为了更加确定(一旦你实际拥有一个数组 - 添加到'检查错误键'帖子,顺便说一句),你也可以检查大小

if( $_FILES['file']['size'] > 0 ) {

}