Php 警告:文件\获取\内容():文件名不能为空(由if条件覆盖)

Php 警告:文件\获取\内容():文件名不能为空(由if条件覆盖),php,Php,我试图为我的评估做一个要求,即“在某种形式上,如果用户上传1个或多个图像,这些图像和其他输入信息需要存储在数据库中。如果用户选择不上传任何图像,其他输入信息需要存储在数据库中。” 这是我按自己的方式做时得到的结果,但并不完美 警告:文件\u get\u contents():第178行C:\xampp\htdocs\WEB Assignment\phpserver.php中的文件名不能为空 这是我从var_dump得到的 array(5) { ["ServiceSelected"]=&

我试图为我的评估做一个要求,即“在某种形式上,如果用户上传1个或多个图像,这些图像和其他输入信息需要存储在数据库中。如果用户选择不上传任何图像,其他输入信息需要存储在数据库中。”

这是我按自己的方式做时得到的结果,但并不完美

警告:文件\u get\u contents():第178行C:\xampp\htdocs\WEB Assignment\phpserver.php中的文件名不能为空

这是我从var_dump得到的

array(5) { 
    ["ServiceSelected"]=> string(8) "Teaching" 
    ["SkillsRequirement"]=> array(1) { 
            [0]=> string(4) "None" 
            } 
    ["serviceLocation"]=> string(8) "Test NM4" 
    ["CreditAward"]=> string(2) "99" 
    ["CreateTaskSubmit"]=> string(0) "" 
} 

array(1) { 
    ["Image"]=> array(5) { 
            ["name"]=> array(1) { 
                    [0]=> string(0) "" 
            } 
            ["type"]=> array(1) { 
                    [0]=> string(0) "" 
            } 
            ["tmp_name"]=> array(1) { 
                    [0]=> string(0) "" 
            } 
    ["error"]=> array(1) { 
            [0]=> int(4) 
            } 
    ["size"]=> array(1) { 
            [0]=> int(0) 
            } 
    } 
} 

array(1) { 
    ["Image"]=> array(5) { 
        ["name"]=> array(1) { 
            [0]=> string(0) "" 
        } 
        ["type"]=> array(1) { 
            [0]=> string(0) "" 
        } 
        ["tmp_name"]=> array(1) { 
            [0]=> string(0) "" 
            } 
        ["error"]=> array(1) { 
            [0]=> int(4) 
            } 
        ["size"]=> array(1) { 
            [0]=> int(0) 
            } 
    } 
}
我的第一次尝试是使用多个图像上传

foreach ($_FILES['Image']['tmp_name'] as $ui) {
    $imagesUploaded = base64_encode(file_get_contents($ui));
    mysqli_query($db, "INSERT INTO imagedb 
                                (UploadedImage,Task_ID) 
                        VALUES ('$imagesUploaded','$lastTaskId')");
}
第二次尝试,当我尝试在我的评估需要的条件下进行时

if ($_FILES['Image']['size'] == 0) {
    $NoImage = "C:/xampp/htdocs/WEB Assignment/image/NoImage.jpg";
    $imagesUploaded = base64_encode(file_get_contents($NoImage));
    mysqli_query($db, "INSERT INTO imagedb 
                                (UploadedImage,Task_ID) 
                        VALUES ('$imagesUploaded','$lastTaskId')");
} else {
    foreach ($_FILES['Image']['tmp_name'] as $ui) {
        $imagesUploaded = base64_encode(file_get_contents($ui)); // Line 178
        mysqli_query($db, "INSERT INTO imagedb 
                                    (UploadedImage,Task_ID) 
                            VALUES ('$imagesUploaded','$lastTaskId')");
    }
}
第三,尝试不同的方法

if (count($_FILES['Image']) > 0) {
        foreach ($_FILES['Image']['tmp_name'] as $ui) {
            $imagesUploaded = base64_encode(file_get_contents($ui)); // Line 178
            mysqli_query($db, "INSERT INTO imagedb (UploadedImage,Task_ID) VALUES ('$imagesUploaded','$lastTaskId')");
        }
    }else{
        echo "no image uploaded";
    }

^的问题是,每当我没有上传任何图像时,我都希望存储在数据库中的$NoImage显示用户没有上传图像,但$NoImage没有存储在数据库中,并生成“警告”内容。

已解决

将第一个方法修改为此

foreach ($_FILES['Image']['name'] as $ui => $value){
        if(is_uploaded_file($_FILES['Image']['tmp_name'][$ui])){
            $imagesUploaded = base64_encode(file_get_contents($_FILES['Image']['tmp_name'][$ui]));
            mysqli_query($db, "INSERT INTO imagedb (UploadedImage,Task_ID) VALUES ('$imagesUploaded','$lastTaskId')");
        }

    }

评论不用于扩展讨论;这段对话已经结束。