2009-01-19 28 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