2011-05-16 33 views
6

我想確定一些文件是否實際上是圖像(使用PHP)。 我一直建議使用finfo,我試圖瞭解它是如何工作的。用PHP確定文件類型。什麼是Magic數據庫?

我不明白的是 - 什麼是神奇數字數據庫,它是如何工作的?我有點困惑 - 每個文件都有一定的「幻數」,你比較該數據庫?

另外 - 我有我的debian擠 - 但它也可以在WIN平臺上?或者必須將該數據庫與應用程序一起附加?

<?php 
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic.mgc"); 
if (!$finfo) { 
    echo "Opening fileinfo database failed"; 
    exit(); 
} 

/* get mime-type for a specific file */ 
$filename = "/usr/local/something.txt"; 
echo $finfo->file($filename); 

?> 
+0

相關:http://stackoverflow.com/questions/481743/how-can-i-determine-a-files-true-extension-type-programatically – barfoon 2011-05-16 23:19:32

回答

6

大多數文件格式都有一個標題,它有助於識別它是什麼類型的文件。例如,GIF文件總是開始GIF87

神奇的數字數據庫是所有標題的列表,並允許finfo()爲ID的文件。

Windows沒有默認安裝此數據庫。你需要把它帶到窗戶。實際上,無論您在何處部署以提高跨平臺兼容性,您都應該使用相同的數據庫。想象一下,如果你部署到一個不知道你的開發平臺能夠理解的文件類型的舊系統。

1

會替代解決方案是看看exif_imagetype返回false

+0

我想到了。但它似乎不適用於所有圖像類型。 17? – Stann 2011-05-16 23:18:47

1

在我的Ubuntu上,這是在/usr/share/file/magic.mime。我不知道Windows。是的,通常,各種文件格式都只是爲了這個目的而具有特定的前綴(即使沒有擴展名,例如可以通過它始終以字符串「GIF」開頭的事實來識別GIF)。

相關問題