【发布时间】:2011-03-05 17:01:36
【问题描述】:
php 5.2.9版本如何判断文件是图片还是视频类型
【问题讨论】:
-
PHP how can i check if a file is mp3 or image file 的可能重复项 - 尽管问题标题很多,但给出的答案与文件类型无关
标签: php
php 5.2.9版本如何判断文件是图片还是视频类型
【问题讨论】:
标签: php
$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;
}
【讨论】:
finfo_open 不一定可用。自 5.3.0 以来,它是 PHP 的一部分。在此之前,您必须通过 PECL 安装它。并不是每个人都能做到这一点,例如共享主机。所以人们需要一个后备。虽然其他三个确实不那么可靠,但他们确实完成了工作。所以我不明白指出那个文档段落的意义。
您可以使用finfo_file function检查 MIME 类型
帮助页面中的示例
<?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);
?>
编辑:更好地检查您的问题后,这将不起作用,finfo 函数需要 PHP 5.3.0
【讨论】:
if(isset($_FILES['my_file'])) {
$mime = $_FILES['my_file']['type'];
if(strstr($mime, "video/")){
$filetype = "video";
}else if(strstr($mime, "image/")){
$filetype = "image";
}else if(strstr($mime, "audio/")){
$filetype = "audio";
}
【讨论】:
'type' is provided by the browser (if any) 可能不被完全信任。
我使用以下代码,该代码比第一个也是最受好评的答案更普遍:
$mimeType = mime_content_type($filename);
$fileType = explode('/', $mimeType)[0];
我希望它对任何人都有帮助。
【讨论】:
相当老的问题,但对于其他人在未来看这个,我会这样处理:
function getType($file): string
{
$mime_type = mime_content_type($file);
return strtok($mime_type, '/');
}
此方法利用strtok 返回第一个/ 之前的$mime_type 字符串部分。
例如,假设$file 具有video/mp4 的$mime_type,getType 方法将返回video。
【讨论】: