📜  PHP | exif_imagetype()函数(1)

📅  最后修改于: 2023-12-03 14:45:15.265000             🧑  作者: Mango

PHP | exif_imagetype()函数

简介

在PHP开发中,我们经常需要获取文件的类型信息,尤其是图片的类型信息。exif_imagetype()函数就是PHP内置的获取图片类型的函数。

exif_imagetype()函数可以获取指定文件的MIME类型,常用于验证上传的图片是否为指定的格式,以确保应用程序不会因为处理错误的文件格式而导致故障。

语法
exif_imagetype ( string $filename ) : int|false

参数:

  • filename:要检查的文件名

返回值:

  • 如果文件是正确的图像文件类型,则返回对应图像类型的常量值(IMAGETYPE_XXX)。
  • 如果文件不是有效的图像类型,则返回 FALSE
例子

检查指定的文件是否为 PNG 格式:

$filename = "example.png";
$type = exif_imagetype($filename);
if ($type == IMAGETYPE_PNG) {
    echo "This is a PNG image";
} else {
    echo "This is not a PNG image";
}
图片类型常量

exif_imagetype()函数所返回的常量值如下:

| 常量名 | 值 | 图片类型 | | ------| ---| ------- | |IMAGETYPE_JPEG|2|JPEG| |IMAGETYPE_GIF|1|GIF| |IMAGETYPE_PNG|3|PNG| |IMAGETYPE_SWF|4|Flash| |IMAGETYPE_PSD|5|Photoshop| |IMAGETYPE_BMP|6|Bitmap| |IMAGETYPE_TIFF_II (intel byte order)|7|TIFF| |IMAGETYPE_TIFF_MM (motorola byte order)|8|TIFF| |IMAGETYPE_JPC|9|JPEG-2000| |IMAGETYPE_JP2|10|JPEG-2000| |IMAGETYPE_JPX|11|JPEG-2000| |IMAGETYPE_JB2|12|JBIG2| |IMAGETYPE_SWC|13|Flash| |IMAGETYPE_IFF|14|IFF| |IMAGETYPE_WBMP|15|WBMP| |IMAGETYPE_JPEG2000|9|JPEG-2000|

注意事项
  1. 函数只能检测文件是否为图片文件,但无法检测图片文件是否损坏。
  2. 可能会存在漏洞,攻击者可能通过上传带有特殊后缀的非图片文件绕过图片类型检查。
  3. exif_imagetype()函数不涉及文件的扩展名(后缀),只根据文件头信息来判断文件类型,所以在创建图片时一定要注意图片的正确后缀名。
  4. 在PHP 5.3.0之前的版本中,该函数不支持 SWF、PSD 和 BMP 格式。