验证空的$ _FILES

时间:2016-02-24 15:04:24

标签: php post file-upload

我有一个简单的注册表单,用户可以上传个人资料图片,如果用户没有,它应该采用名为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"] == "")

2 个答案:

答案 0 :(得分:0)

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

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

只要您不上传该表单中的其他文件,您也可以检查$ _FILES:

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

有关详细信息,请查看文件上传的official manual 我希望这有助于你:)

答案 1 :(得分:0)

您可以检查$ _FILE ['image'] ['name']不等于“”这项工作; 见代码:

<!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";
    }

}
?>