【问题标题】:Sending most correct mimetype发送最正确的 mimetype
【发布时间】:2010-05-08 09:03:54
【问题描述】:

我有一个 INI 文件中 mimetype 的扩展名列表。然而,一些扩展有多种 mimetypes,例如;

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

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

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

* 例如一些fileinfo结果;

  • js - 文本/纯文本
  • css - 文本/c-h

【问题讨论】:

  • 嗯,我用 PHP 编程,但我可以想象同样的问题会在其他语言中弹出。此外,它不仅是“作为内容类型的值”,而且是可选的其他用途。

标签: content-type mime-types


【解决方案1】:

归根结底,您拥有的最好的就是文件扩展名。

对于明确的列表,在 apache 源代码树中找到它: docs/conf/mime.types

【讨论】:

  • 我已经想通了 ;-) 关键是我有多种可能的 mimetypes 可供选择......我不确定该选择哪一种。编辑;嗯.. 1 个扩展中的“确定列表”指向 1 个 mimetype?
  • 不,您可以将多个扩展名转到 1 个 mimetype。例如 exe、dll、com、bat 和 msi 映射到 application/x-msdownload 我希望我可以将列表粘贴到此处,但它的条目超过 1000 个!
  • 我查看了列表.. 它确实是明确的(例如,每个扩展名 1 个 mimetype .. 但是您对它们的格式化方式是正确的;多个扩展名映射到 1 个 mimetype).. 我会坚持不过,谢谢!
【解决方案2】:

我最终想出的是以下内容;

首先,我将“FileInfo”用于 100%(已知)匹配(例如 gif、jpeg、png),因为我确实希望对某些文件依赖“指纹”检测。

如果上述方法失败,我将使用“extension 2 mimetype”映射;基于 docs/conf/mime.types(我过滤了所有常用文件;例如图像、音频、视频、网络、文本)

如果仍然没有找到匹配项,我再次使用“FileInfo”;允许任何结果。

此时,如果仍然没有设置 mimetype,我会返回硬编码的“application/octet-stream”。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多