此保证上传的文件有图像后缀吗

时间:2018-12-04 22:23:09

标签: php image-processing image-uploading

我正在编写图像上传脚本。我添加了很多东西,例如存储外部webroot并通过php脚本等进行访问。我读过的一件事是检查文件是上传而不是图像。例如。停止myimage.php.jpeg

我写了下面的代码来检查它是一个图像文件。这是检查此文件是否具有图像名称的最佳方法吗?

$imagename= $_FILES['myimage']['name'];

//check there is only one fullstop in the imagename
 if (substr_count($imagename,".")===1){
    $imagesuffix = substr($imagename, strpos($imagename, ".") + 1); 

    //if image type is not a particular type of image
      if($imagesuffix != "jpg"|| $imagesuffix != "png"||$imagesuffix != "jpeg"||$imagesuffix != "gif"){
       echo"image filename is valid";
     }
     else{
       echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     }
 }
 else{
    echo"this filename is invalid";
 }

1 个答案:

答案 0 :(得分:0)

如果您只允许上传图像文件,则必须查看文件内容。

    <?php

    $image = 'image_file_to_test.png';

    if (($imageInfo = getimagesize($image, $jpegInfo)) === FALSE)
            die('Not an image.');
// OR    

    if (($imageType = exif_imagetype($image)) === FALSE)
            die('Not an image');

如果需要,可以检查$imageInfodocs)或$imageTypedocs)以确定图像格式。请注意,exif_imagetype()是两者中较快的一个,但它告诉您的信息不如getimagesize()