文件上载不上载文件扩展名上的文件检查

时间:2012-09-16 02:39:29

标签: php file-upload

在检查上传图片的文件扩展名时,我的代码始终返回false,导致图片无法上传。上传的图片具有相应的扩展名。

我的问题是为什么它不接受该文件?如果检查是从文件中取出的,则会成功上传。

仅供参考,还有其他检查,所以不要担心这是我唯一的安全检查。只是这是导致所有问题的那个。

$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$pre_ext = explode(".", $tmp_name);
$ext = end($pre_ext);   

if (getimagesize($tmp_name) != false)
{
    //below is the check that is causing all the problems
    if ($ext == "PNG" || $ext == "png" || $ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG" || $ext == "GIF" || $ext == "gif"){
        if ($_FILES['file']['error'] == 0)      
        {
            move_uploaded_file($tmp_name, 'post_images/' . $name);
        }       
    }   
}

1 个答案:

答案 0 :(得分:2)

$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$pre_ext = explode(".", $name);

应该修复它。我建议检查文件本身,而不仅仅是扩展名。 tmp_name是服务器上的临时名称,通常类似于/tmp/random8y7ofad9