2009-01-19 94 views

回答

10

您可以使用finfo_file

<?php 
echo finfo_file(finfo_open(FILEINFO_MIME), "foo.png"); 
?> 
+0

请注意,此方法有它自己的问题(即返回空或不明确的字符串)。 – Sampson 2009-01-19 15:01:35

3

我想你的意思finfo_file()从php.net例发现MIME类型

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

您不能信任浏览器返回的Content-Type。它基于文件扩展名,可以很容易地被欺骗。

由于stalepretzel提到它,猜测文件内容类型的最好方法是使用幻数。如果你的服务器是Unix和Linux机器上运行,你可以使用这个功能:

<?php 

function get_file_type($file) { 
    if(function_exists('shell_exec') === TRUE) { 
    $dump = shell_exec(sprintf('file -bi %s', $file)); 
    $info = explode(';', $dump); 
    return $info[0]; 
    } 
    return FALSE; 
} 

?> 

Usage: $file_type = get_file_type('my_file_name.ext'); 

PD:检查/usr/share/magic.mime到更多的信息。

+0

请注意,使用shell_exec是一个潜在的安全问题 – josh123a123 2016-08-08 20:52:00