php中的空函数无法正常工作

时间:2012-09-04 23:50:55

标签: php

你好,由于某些原因,我无法让我的程序看看我的文件是否为空,如果选择了某些东西,它不应该通过,但确实如此。这是代码

if (empty($_FILES['file'] ) )
    {
        echo "testing";
        $seterror =1;
        returnBack();

    } 

6 个答案:

答案 0 :(得分:2)

如果输出文件数组,会得到什么? (即print_r($_FILES);

您的代码不会告诉您名为file的文件的内容是否为空,它会告诉您$_FILES['file']的值是否为空,这可能不是您想要的。你也可能不想要empty的逻辑 - 你试过这个来看看是否存在差异?

if (array_key_exists('file', $_FILES)) {
    ...
}

答案 1 :(得分:2)

在评论中提供的var_dump($ _ FILES)中,看起来它没有回显“测试”(即它不起作用),因为$ _FILE ['file']不为空。

你提供给我的:

$ _ FILES ['file'] = array(5){[“name”] => string(0)“”[“type”] => string(0)“”[“tmp_name”] => string(0)“”[“error”] => int(4)[“size”] => int(0)}

我不完全确定empty()如何处理数组(documentation只是说它会为空数组返回true),但至少你需要摆脱$ _FILES ['file'] ['error'](因为它是int(4)而不是空的),或者使用empty()来检查类似$ _FILES ['file'] ['name']

的内容

所以,根据我的建议,以下是代码的外观:

if (empty($_FILES['file']['name'])) {
    echo "testing";
    $seterror = 1;
    returnBack();    
}

或(因为我对PHP数组的理解可能有问题),试试这个:

if(empty($_FILES['file']['name'])) {
    echo "testing";
    $seterror = 1;
    returnBack();
}

答案 2 :(得分:1)

如果您正在测试空文件,请输入代码

$file = 'test.txt';

if(filesize($file) == NULL) {
    echo "empty"; 
}

答案 3 :(得分:1)

我想你可以试试这个

if(empty($_FILES['file']['name']))
{
    // not uploaded
}
else
{
    // uploded
}

答案 4 :(得分:1)

PHP中的语言构造empty()和数组不能很好地混合。此外,如果表单中有<input type='file' name='file' />,则获得$_FILES[]数组。你应该开始if( !array_key_exists('file', $_FILES) ) { // no file uploaded }

事实上,你应该做几次检查:

  • 如果在file
  • 中填充了$_FILES元素
  • 如果没有错误(即$_FILES['file']['error'] == 0)
  • 如果上传文件的临时位置有文件名
  • 如果PHP认为它是上传的文件和/或它可以移动它

只有所有这些都是真的,你才有一个要处理的文件。否则你不会。

我发现在文件上传处理程序上遵循这些步骤是完全可靠的。

答案 5 :(得分:0)

好的,所以我要做的就是检查一下是否有错误 - 所以如果它确实没有通过,因为它意味着它是空的

代码:

if (!empty($_FILES['file']['error'] ) )
    {

        echo "file";
        $seterror =1;
        returnBack();

    } 

非常感谢帮助人员!