【问题标题】:Is there a full list of mime-types / headers?是否有完整的 mime 类型/标题列表?
【发布时间】:2011-12-25 03:04:15
【问题描述】:

我想我想最终构建一个脚本,该脚本将强制浏览器在某种意义上提示下载而不是直接转到文件,我想根据 db 条目来完成它,所以它被混淆了那么一点多一点。我的问题是我只能找到一个或 2 个 mime 类型来使用,但我想要一个公平的股票价值。从 doc 到 pdf,到 mp3 到 avi.. 我的脚本将根据文件的扩展名运行,然后输出正确的标题,只需要知道用什么类型的文件输出什么标题。是否有一个常见的已知文件类型列表,默认情况下可以在浏览器中流式传输或打开,我可以浏览一下?

【问题讨论】:

  • 有一个 .NET 框架替代方案:stackoverflow.com/questions/3937958/…(仍在寻找 PHP + Apache 解决方案)
  • 我很欣赏通过 .NET 提供的解决方案,不幸的是,我正在构建的应用程序是用 PHP 开发的。但是好的调用仍然是,当涉及到在具有类似需求的 .NET 站点上工作时,必须牢记这一点

标签: php http-headers download


【解决方案1】:

文件扩展名并不是确定文件类型的最可靠方法。你可能有兴趣做一些 MIME 猜测。如果您的应用托管在 Linux 中,您可以使用带有-i 选项的file 命令行工具:

// Use escapeshellarg() to inject arbitrary file paths
$content_type = `file -i /path/to/file`;

否则,PHP 有一个名为 Fileinfo 的 PECL 扩展。

如果你想坚持使用文件扩展名,media types are approved by the IANA

更新: Fileinfo 是 PHP/5.3.0 以来的原生扩展(因此无需安装第三方应用程序)。使用示例:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($finfo, '/path/to/file');
finfo_close($finfo);

【讨论】:

  • 我知道我可以很快测试这个。希望(我知道 godaddy 有它的限制)但我还没有准备好这样做,$mime_type 是否会是 application/blah 的等价物,我会将它转储到标题中?
【解决方案2】:

评论太长了。所以我把它作为一个答案。

测试 MIME 类型支持

Firebug 可用于检查 Apache 针对不同返回的标头 图像和电影类型。为此,只需尝试加载所需的 HTML 格式的文件。打开 Firebug 并转到“Net”->“Headers”->“Response Headers"。内容类型应该出现在那里。如果 Apache 没有 识别图像/电影,那么它可能会返回为 “文本/纯文本”。如果 Apache 确实识别出该资源,那么您应该 查看正确的 MIME 类型,例如“视频/网络”。请注意,如果您看到 请求状态旁边的“304 Not Modified”,则资源为 从缓存中提取,并且 HTTP 标头可能不会反映任何 您对 Apache 的配置所做的更改。您可以使用“控制 + F5" 强制 Firefox 重新获取所有缓存的项目。

根据上面的提示,您可以通过解析服务器响应来测试来自 Web 服务器的内容类型响应。如果返回text/plain,则表示不支持MIME。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2014-04-15
    • 2012-09-14
    相关资源
    最近更新 更多