2015-11-01 49 views
1

該文件的類型依賴文件擴展名。我的意思是PHP的finfo實際上會分析文件數據以確定文件類型還是依賴於文件擴展名?將.png文件擴展名更改爲.txt不會影響finfo文件類型的更改,也不會影響電子郵件MIME數據作爲附件?我GOOGLE了一下,什麼也沒找到。請指教。文件類型是否依賴文件擴展名?

謝謝,

+0

我相信這是非常清楚我在問什麼,因爲我也得到了一個有用的答案。如果這不清楚,這是你不明白的問題。 – user4271704

回答

2

PHP的fileinfo函數使用libmagic的本地副本。您可以查看「ext/fileinfo /」下的PHP源代碼並查看名爲libmagic的文件夾。 unix命令「file」也使用libmagic,因此運行「file myfile.txt」應該產生與PHP函數finfo_file()相同的輸出。

https://en.wikipedia.org/wiki/File_%28command%29

libmagic檢查文件的一部分,通常是前幾個字節,並且不依賴擴展。

文件的位置敏感測試通常通過將文件中的各個位置與文本數據庫中的幻數進行匹配來實現(請參閱用法部分)。這不同於其他更簡單的方法,例如文件擴展名和MIME等方案。

+0

謝謝,所以電子郵件的mime數據依賴於附加文件的擴展名,而不是像finfo那樣實際分析文件數據? – user4271704

+0

MIME只是告訴你如何在電子郵件中寫附件。它指定您可以添加Content-Type標題和附件分隔符塊的位置。如何填充Content-Type的價值取決於您(或發送電子郵件的系統) – chugadie

+0

因此,如果我想知道附加文件的確切文件類型,我應該先保存文件,然後使用finfo而不是依靠內容類型在電子郵件的MIME數據?對? – user4271704