0

在检查上传图片的文件扩展名时,我的代码总是返回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);
        }       
    }   
}
4

1 回答 1

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

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

于 2012-09-16T02:42:38.437 回答