是否有mime-types / headers的完整列表?

时间:2011-11-09 08:45:30

标签: php http-headers download

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

2 个答案:

答案 0 :(得分:4)

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

// 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);

答案 1 :(得分:1)

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

测试MIME类型支持

  

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

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