php文件上传与验证类型

时间:2013-08-28 17:54:04

标签: php html file-upload

在php中我有上传文件的代码就像这样

 $image_name= $_FILES['file']['name'];
  $allowedExts = array("gif", "jpeg", "jpg", "png");
  $temp = explode(".", $_FILES["file"]["name"]);
  $extension = end($temp);
  if ((($_FILES["file"]["type"] == "image/gif")
  || ($_FILES["file"]["type"] == "image/jpeg")
  || ($_FILES["file"]["type"] == "image/jpg")
  || ($_FILES["file"]["type"] == "image/pjpeg")
  || ($_FILES["file"]["type"] == "image/x-png")
  || ($_FILES["file"]["type"] == "image/png"))
  && in_array($extension, $allowedExts)) {
    if ($_FILES["file"]["error"] > 0) {
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
    else {
     move_uploaded_file($_FILES['file']['tmp_name'], $tmpName.$image_name);
    }
  }

现在这个代码在上传时工作正常。但它不适用于文件类型验证。我用过   $allowedExts = array("gif", "jpeg", "jpg", "png"); to use only these types of file to upload. But this one is uploading any files type. So can someone kindly tell me where is the wrong part here. I want to upload only仅限“gif”,“jpeg”,“jpg”,“png”文件。任何帮助和建议将非常赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

我记得之前我遇到过文件类型问题而我无法解决它所以我决定继续使用其他内容。 这是我检查上传文件之前是否为“图像”方式的方法之一。我认为检查一个文件是否真的是一个图像并不是一个很好的方法,但它实际上对我有用,而且到时候我什么都想不到。

<?php
    if(isAnImage($routetoyourfile)) {
        //Move the file
    } else {
        //Delete it
    }
    function isAnImage($fileroute) {
        $ext = pathinfo($fileroute, PATHINFO_EXTENSION);
        if($ext != "jpg" && $ext != "jpeg" && $ext != "png" && $ext != "JPG" && $ext != "PNG" && $ext != "JPEG") {
            return 0;
        } else {
            return 1;
        }
    }
?>