2012-09-16 173 views
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); 
     }  
    } 
} 

回答

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

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

+0

太棒了,非常感谢。如果我有一个后续问题,并且这与我当前的问题无关,如果我没有使用'move_uploaded_file()',图像在tmp文件夹中的持续时间有多长? – jason328

+0

当脚本运行完毕时,它会被删除。所以如果你想稍后使用它,你必须使用'move_uploaded_file'或'copy'复制它。 –

相关问题