如何检测纯文本文件的MIME类型:CSS,Javascript,ini,sql?

cwe*_*ske 8 php file mime-types

使用PHP检测文件的MIME类型是微不足道的 - 只需使用PEAR的MIME_Type包,PHP的fileinfofile -i在Unix机器上调用.这对于二进制文件以及具有某种"魔术字节"的所有其他文件非常有效,通过它们可以轻松地检测到它们.

我失败的是检测纯文本文件的正确MIME类型:

  • CSS
  • DIFF
  • INI(配置)
  • 使用Javascript
  • 的rST
  • SQL

所有这些都被标识为"text/plain",这是正确的,但对我来说太不明确了.我需要真正的类型,即使它花费一些时间来分析文件内容.

所以我的问题:有哪些解决方案来检测此类纯文本文件的MIME类型?任何图书馆?代码片段?


请注意,我既没有文件名也没有文件扩展名,但我有文件内容.


如果我使用ruby,我可以整合github的语言学家.Ohloh的ohcount是用C语言编写的,但有一个命令行工具来检测类型:ohcount -d $file

我试过的

ohcount

正确检测xml和php文件,其他所有文件都没有.

阿帕奇蒂卡

检测xml和html,所有其他测试文件只被视为text/plain.

cwe*_*ske 4

由于我没有找到合适的库,因此我编写了自己的魔术文件来正确检测我的所有测试文件。

我的应用程序首先尝试自定义魔术文件进行检测,如果未检测到类型,则回退到正常/系统魔术文件。

其代码位于 github 上,请参阅https://github.com/cweiske/MIME_Type_PlainDetect。magic 文件位于data/programming.magic并可与file -f programming.magic /path/to/source