【问题标题】:What exactly does it mean when $_FILES is empty?$_FILES 为空时究竟是什么意思?
【发布时间】:2011-02-23 12:38:09
【问题描述】:

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

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

这和php.ini中的设置有关系吗?

只是为了澄清

我正在使用以下命令检查 $_FILES 是否为空:

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

【问题讨论】:

    标签: php error-handling upload


    【解决方案1】:

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

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

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

    编辑:我知道您可以在php.ini 文件中设置最大文件大小,但我不确定这是否会给您一个空文件数组。我想你只会得到一个错误。

    【讨论】:

    • 好建议。 var_dump 一个空数组
    • @Col - 因为他听起来像个初学者,所以这是为了帮助验证数组确实是空的,并且他没有查看错误的索引。
    【解决方案2】:

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

    echo ini_get("upload_max_filesize");
    

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

    【讨论】:

    • 谢谢!肯定是因为 TIFF 文件大小超过了upload_max_filesizepost_max_size
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 这不是真的。只有 PHP 关注 MAX_FILE_SIZE 字段。
    • 更新的答案 - 感谢您提供的详细信息。虽然仍然适用,因为这是 php。
    • 你的答案仍然无关紧要
    • 怎么样?如果我尝试将 40 MB 的文件上传到带有 的表单中,即使 php 的限制为 100MB,它仍然会导致空 $ _FILES 数组。
    • @Col。弹片。不要只是说某事无关紧要,请解释原因。
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2013-09-29
    • 2014-10-29
    • 2016-01-27
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多