在功能中检查上传的文件大小

时间:2014-06-02 16:41:40

标签: php

我创建了一个检查上传文件大小的功能。但是,当我上传小于允许大小的文件时,它始终输出size is over permit。这是我的功能:

$max=150000;
    function checkSize($size)
    {
        global $max;
        if($size >= $max)
        {
            return false;
            //echo 'size > max size';
        }
    }

    $checkSize=checkSize($_FILES['image']['size']);
    if($checkSize==false)
            {
                echo 'size is over permit';
            }
            else
            {
                echo 'ok';
            }

2 个答案:

答案 0 :(得分:3)

如果大小合适,您的checkSize()不会返回任何内容,这意味着PHP会自动返回null值。 php中的null == false为TRUE,因此您错误地说大小不合适:

php > var_dump(null == false);
bool(true)

您的代码应该是:

function checkSize($size) {
    global $max;
    return ($size <= $max);
}

这样您就可以返回truefalse

或者,您可以使用&#34; strict&#34;平等测试,===

php > var_dump(null === false);
bool(false)

答案 1 :(得分:0)

在您的函数中使用有意义的名称可能会有所帮助,因此您可以知道会发生什么。例如,你将你的函数命名为uploadIsAllowableSize(),那么如果大小给定超过最大值,你会更好地理解它返回false的预期行为。如果大小可以接受,您还需要返回true。您可以在一行中轻松完成此操作,如:

return ($size >= $max); 

您也可以考虑为最大文件大小定义变量,而不是使用global。这是处理这样的事情的首选方式,不应该在运行时更改。