如何在php版本5.2.9中检查文件是否为图像或视频类型?
如何在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
$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, '/');
}