一尘不染

PHP检查文件是否为图像

php

有没有办法确保收到的文件中包含图像PHP

对扩展程序的测试对我来说并不十分安全,因为您可以上传一个script并将其扩展名更改为所需的扩展名。

我也尝试使用getimagesize,但是可能有一些更适合该特定问题的东西。


阅读 277

收藏
2020-05-26

共1个答案

一尘不染

获取mimetype的本机方法:

对于PHP <5.3,请使用mime_content_type()对于PHP> = 5.3,请使用finfo_open()或mime_content_type()

获得MimeType的替代方法是exif_imagetype和getimagesize,但是这些方法依赖于安装适当的库。此外,它们可能仅返回图像模仿类型,而不是magic.mime中给出的整个列表。

虽然mime_content_type可以从PHP 4.3获得并且是FileInfo扩展的一部分(自PHP
5.3起默认启用,但Windows平台除外,该平台必须手动启用

如果您不想打扰系统上可用的功能,只需将所有四个函数包装到一个代理方法中,该方法将函数调用委托给任何可用的方法,例如

function getMimeType($filename)
{
    $mimetype = false;
    if(function_exists('finfo_open')) {
        // open with FileInfo
    } elseif(function_exists('getimagesize')) {
        // open with GD
    } elseif(function_exists('exif_imagetype')) {
       // open with EXIF
    } elseif(function_exists('mime_content_type')) {
       $mimetype = mime_content_type($filename);
    }
    return $mimetype;
}
2020-05-26