Validating empty $_FILES


Validating empty $_FILES

>我有一个简单的注册表单,用户可以在其中上传个人资料图片,如果用户不这样做,它应该采用默认的图片名称,称为 person-icon.png。

当我注册用户并上传图片时,它可以工作,但是如果我将其留空,请不要执行任何操作,并且该列将插入数据库空

if(isset($_FILES['image'])){
  $img = $_FILES['image']['name'];
}
else if(empty($_FILES['image']['name'])){
  $img = 'person-icon.png';
}

我已经尝试了以下选项:

选项 1:

if (empty($_FILES['image'])){
  $img = 'person-icon.png';
}
else{
  $img = $_FILES['image']['name'];
}

选项 2:

if($_FILES["image"]["error"] == 4)  

选项 3:

if($_FILES["image"]["name"] == "")
你可以

检查$_FILE['图像']['名称']不等于"这项工作;请参阅代码:

<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="image" id="image">
    <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html> 
<?php
//var_dump($_FILES);
$default_pic =" pic.png";
if (isset($_FILES['image'])){
    if($_FILES['image']['name'] != ""){
        echo "has pic";
    }
    else{
        $_FILES['image']['name'] = $default_pic;
        echo "has no pic";
    }
}
?>

为了检查文件是否已上传,您必须查找 tmp_name ,因为这是包含服务器上文件内容的实际副本的内容。我会做这样的事情:

$file = $_FILES['file']['tmp_name'];
if (!file_exists($file)){
  //no image
}
else{
  //image
}
您还可以

检查 $_FILES,只要您不以该形式上传其他文件:

if(empty($_FILES)){
  //no image
}
else{
  //image
} 

有关更多信息,请查看文件上传的官方手册。
我希望这对你有所帮助:)