您可以使用magic numbers,查閱其他文件簽名列表(like this one here),然後檢查第一個字節的二進制數據。
function getfiletype($file) {
$handle = @fopen($file, 'r');
if (!$handle)
throw new Exception('File error - Can not open File or file missing');
$types = array('jpeg' => "\xFF\xD8\xFF",
'gif' => 'GIF',
'bmp' => 'BM',
'tiff' => '\x49\x20\x49',
'png' => "\x89\x50\x4e\x47\x0d\x0a",
'psd' => '8BPS',
'swf' => 'FWS');
$bytes = fgets($handle, 8);
$filetype = 'other';
foreach ($types as $type => $header) {
if (strpos($bytes, $header) === 0) {
$filetype = $type;
break;
}
}
fclose($handle);
return $filetype;
}
這實際上是對文檔信息(一個很簡單的替換功能),它工作在幾乎相同的方式,但在一個非常擴展(或更低)的水平。
方法是使用一個已經取得外部的PHP類像this one例如..
的可能重複[我要如何找到MIME類型的PHP文件的?](http://stackoverflow.com/ question/134833/how-do-i-find-the-mime-a-file-with-php) – 2010-05-20 07:07:54
呃,我很迷惑。我實際上閱讀了這篇文章,但我無法找到任何好的答案,我的意思是,我找不到任何可接受的答案,這是否意味着,如果沒有絕對答案,我今後不能發佈任何類似的問題?什麼是SO規則?我想知道,所以我可以按照=) – mysqllearner 2010-05-20 07:13:34
而我認爲這篇文章(http://stackoverflow.com/questions/134833/how-do-i-find-the-mime-type-of-a-file -with-php)在1年前被問到,我懷疑是否會有任何新的答案=( – mysqllearner 2010-05-20 07:15:23