确定文件是否是PHP中的图像的最佳方法是什么?

cha*_*m15 2 php file-upload image

我有一个人们可以上传文件的服务器.问题是某些文件名被破坏(没有任何扩展名),所以我无法立即确定文件类型.这个问题是两部分:对于有文件名的文件,确定它是否是图像的最佳方法是什么?(只是一个很长的if/else if列表?)其次,对于没有扩展名的文件,我如何确定它们是否是图像?

mac*_*ohn 5

您可以使用 exif_imagetype()

<?php
    $type =exif_imagetype($image);
Run Code Online (Sandbox Code Playgroud)

其中$ type是一个值

  1. IMAGETYPE_GIF
  2. IMAGETYPE_JPEG
  3. IMAGETYPE_PNG
  4. IMAGETYPE_SWF
  5. IMAGETYPE_PSD
  6. IMAGETYPE_BMP
  7. IMAGETYPE_TIFF_II(英特尔字节顺序)
  8. IMAGETYPE_TIFF_MM(摩托罗拉字节顺序)
  9. IMAGETYPE_JPC
  10. IMAGETYPE_JP2
  11. IMAGETYPE_JPX
  12. IMAGETYPE_JB2
  13. IMAGETYPE_SWC
  14. IMAGETYPE_IFF
  15. IMAGETYPE_WBMP
  16. IMAGETYPE_XBM
  17. IMAGETYPE_ICO

从手册:

找到正确的签名后,将返回相应的常量值,否则返回值为FALSE.返回值与getimagesize()索引2中返回的值相同,但exif_imagetype()速度更快.