如何在php版本5.2.9中检查文件是否为图像或视频类型?

如何在php版本5.2.9中检查文件是否为图像或视频类型?,php,Php,如何在php版本5.2.9中检查文件是图像还是视频类型您可以使用 帮助页面中的示例 <?php $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension foreach (glob("*") as $filename) { echo finfo_file($finfo, $filename) . "\n"; } finfo_close($finfo); ?> E

如何在php版本5.2.9中检查文件是图像还是视频类型

您可以使用

帮助页面中的示例

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
    echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>

EDIT:在更好地检查您的问题后,这将不起作用,
finfo
函数需要PHP5.3.0

$mime = mime_content_type($file);
if(strstr($mime, "video/")){
    // this code for video
}else if(strstr($mime, "image/")){
    // this code for image
}
应该适用于大多数文件扩展名。

请参阅我的答案

示例代码

 function getMimeType($filename)
 {
     $mimetype = false;
     if(function_exists('finfo_fopen')) {
         // 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;
 }

我使用了以下代码,IMO比第一个答案更具普遍性,也是投票最多的答案:

$mimeType=mime\u content\u type($filename);
$fileType=explode('/',$mimeType)[0];

我希望这对任何人都有帮助。

这是一个老生常谈的问题,但对于将来关注这个问题的其他人,我会这样处理:

function getType($file): string
{
    $mime_type = mime_content_type($file);

    return strtok($mime_type, '/');
}
此方法用于返回第一个
/
之前的
$mime\u type
字符串部分


例如,假设
$file
有一个
$mime_type
video/mp4
,那么
getType
方法将返回
video

的可能重复项-尽管问题标题是独立的,但给出的许多答案都是文件类型,而此代码可能会回答这个问题,最好解释一下它是如何解决问题的,以及为什么要使用它。从长远来看,纯代码答案没有用处。此答案仅适用于上载的文件。此外,因此可能不完全受信任。getimagesize文档中:“不要使用getimagesize()检查给定文件是否为有效图像。请改用专门构建的解决方案,如Fileinfo扩展名。”@Stephern上述代码在Fileinfo扩展名作为首选时确实使用。早在2010年我写下这个答案时,
finfo_open
并不一定可用。从5.3.0开始,它就是PHP的一部分。在此之前,您必须通过PECL安装它。并不是每个人都能做到这一点,例如共享主机。所以人们需要一个退路。虽然其他三个确实不那么可靠,但他们确实完成了任务。所以我不明白指出那篇文章的意义。
function getType($file): string
{
    $mime_type = mime_content_type($file);

    return strtok($mime_type, '/');
}