当前位置: 首页 > 知识库问答 >
问题:

警告:file_get_contents():文件名不能为空(被if条件覆盖)

段溪叠
2023-03-14

我试图为我的评估做一个要求,即“在某种形式上,如果用户上传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没有存储到数据库中,并产生“警告”。

共有1个答案

郏兴贤
2023-03-14

已解决

将第一个方法修改为

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')");
        }

    }
 类似资料:
  • 每当我试图上传一个图像,它就会显示这个错误 警告::文件名不能为空 我的代码是:

  • 我是php新手。我用php制作了一个简单的上传表单。这是我的密码。 它工作正常。但是如果我在没有附加文件的情况下按下提交键,它会显示错误,警告:file_get_contents():第20行的C:\xampp\htdocs\契约db\filetest.php中的文件名不能为空。 我希望上传文件是可选的,因为不是每个用户都有附加的文件。我还希望用户在上传后下载文件而不删除file_get_cont

  • 我每次点击提交按钮都会出现这个错误。其他所有内容都提交到数据库,只有图像没有提交。警告:file\u get\u contents():文件名不能为空。你知道吗?这是我的密码。

  • 问题内容: 如果包含变音符号(ä,ö,ü)在我的Windows操作系统上不起作用。通过反复试验,我发现需要做一些工作。 但是,当我将其实时推送到服务器上(猜测它是某种Linux)时,它又返回了一个错误,因此我删除了,然后突然工作正常。 作为一种解决方法(因此,我不需要在每次更改代码时都手动更改此代码),我已经尝试过 因为这已经反过来解决了相同的问题()也有同样的问题,但是事实证明它在每个(服务器)

  • 问题内容: 登录ssh后,我收到以下消息: “用户名”不在sudoers文件中。将报告此事件。 我该如何解决?我正在将ssh连接到我的虚拟专用服务器。 问题答案: 打开文件 然后像下面的语法一样在admin用户下面添加用户。

  • 我正在使用Spring Boot 2.1.6.RELEASE,我想知道应该如何使用? 配置示例: 和位于不同的模块中。 错误: 无法注册在类路径资源[com/example/autoconf/configuration/app configuration . class]中定义的bean“foo”。已在类路径资源[com/my/configuration/myautoconfiguration .