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