【问题标题】:How to check if $_POST[image] is set如何检查是否设置了 $_POST[image]
【发布时间】:2017-12-04 08:13:11
【问题描述】:

再问how to check if $_POST[FILE] isset 我有一个文件输入,如果我提交没有图像的表单,我希望在输入中上传文件时发生一些事情。

if (!isset($_POST[image])) { }

无论我是否在输入中上传了文件,似乎都会触发。

<label>
    <p>Profile Picture:</p>
    <input type="file" name="image" value="" />
</label>

我的最后一个问题被标记为与此答案Check whether file is uploaded 重复

if (!file_exists($_FILE['image'])) { }

没有工作,即使上传了图像,它仍然显示真实。所以不是我需要的答案。

【问题讨论】:

  • 对两者都执行print_rvar_dump 看看会发生什么。对有文件和无文件都这样做
  • 它的 $_FILES 而不是 $_FILE
  • 这现在正在发送警告错误:file_exists() 期望参数 1 是有效路径,给定数组而且它也破坏了我的 header();即使上传了文件,它仍然是真实的。
  • 当我不放入文件并使用 if (empty($_FILES['image'])) { 它也是真实的。我必须在这里遗漏一些更大的东西吗?

标签: php mysql file post isset


【解决方案1】:

要检查是否有文件上传,你需要检查文件的大小。

然后要检查它是否是图像,您需要使用 getimagesize() 函数。请参阅下面的脚本:

HTML:

<form action="index.php?act=s" method="post" enctype="multipart/form-data">
<input type="file" name="image" id="image" value=""/>
<input type="submit">
</form>

PHP:

<?php  
if(isset($_GET['act'])){
    // Check if there is a file uploaded
    if($_FILES["image"]["size"]>0){
        echo "There is a file uploaded<br>";
        // Check if its an image
            $check_if_image = getimagesize($_FILES["image"]["tmp_name"]);
            if($check_if_image !== false) {
                echo "Image = " . $check_if_image["mime"] . ".";            
            } else {
                echo "Not an image";            
            }
    }
    else{
        echo "There is NO file uploaded<br>";
    }   
}   
?>

【讨论】:

  • 所以我把它改成了 if ($_FILES["image"]["size"] = 0) { } 当我上传文件时它仍然是真实的。
  • HAHAHA 很晚了,我错过了一个=,所以它当然是真的。我认为这个答案解决了我的问题让我测试并验证然后我会接受。
猜你喜欢
  • 1970-01-01
  • 2020-04-07
  • 2016-12-05
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
相关资源
最近更新 更多