2010-05-08 43 views
1

我有一个INI文件中mimetype的扩展列表。但是一些扩展名有多个mimetypes,例如;发送最正确的mimetype

midi[] = "application/x-midi"
midi[] = "audio/midi"
midi[] = "audio/x-mid"
midi[] = "audio/x-midi"
midi[] = "music/crescendo"
midi[] = "x-music/x-midi"

6(可能的)MIME类型1点的扩展。什么常见的做法来确定正确的mimetype? (例如,我需要设置一个HTTP内容类型标题)。

我知道它不理想;确定基于扩展的mimetypes ..但我需要一致的(跨服务器)结果(例如PHP中的fileinfo扩展做出可怕的猜测*)。

*一些文件信息结果,例如;

  • JS - text/plain的
  • CSS - 文本/ C-H
+0

在PHP或一般? – 2010-05-08 09:08:44

+0

在im编程中,但我可以想象在其他语言弹出相同的问题。 也不仅仅是“作为内容类型的价值”,而是可选的其他目的。 – 2010-05-08 09:15:42

回答

0

我最终想出了在下面的;

首先我使用“FileInfo”进行100%(已知)匹配(例如gif,jpeg,png),因为我确实想要依靠某些文件的“指纹”检测。

如果上面的失败,我回退“扩展2 mimetype”地图;基于docs/conf/mime.types(我过滤了所有常用的文件;例如图像,音频,视频,网页,文本)

如果仍未找到匹配,我再次使用“FileInfo”允许任何结果。

此时,如果仍未设置mimetype,则返回硬编码的“application/octet-stream”。

1

在这一天,你有最好的到底是文件扩展名。

对于肯定列表,在Apache源代码树中找到此: 文档/ conf目录/的mime.types

+0

我已经想通了;-)关键是我有多种可能的mimetypes可供选择...我不知道哪一个挑选。 编辑; 嗯..“确定列表”在1扩展指向1 mimetype? – 2010-05-08 11:09:26

+0

不,你可以有多个扩展到1 mimetype。例如exe,dll,com,bat和msi映射到应用程序/ x-msdownload我希望我可以在这里粘贴列表,但它的条目超过1000个条目! – zaf 2010-05-08 17:02:36

+0

我看了清单..和它的确确定义(例如每个扩展1 mimetype ..但是你怎么正确的格式化它;多个扩展映射到1 mimetype)..即时通讯要坚持这个,但是,谢谢! – 2010-05-09 10:10:50