当我在php
中查找我的.flv
和f4v
的MIME类型时,它将它们表示为:application/octet-stream。.flv和.f4v文件扩展名,显示意外的MIME类型
我一直认为这些文件的MIME类型是'video/x-flv'和'video/x-f4v'。这是一个新事物,还是来自一个时髦的来源或什么东西的文件?
当我在php
中查找我的.flv
和f4v
的MIME类型时,它将它们表示为:application/octet-stream。.flv和.f4v文件扩展名,显示意外的MIME类型
我一直认为这些文件的MIME类型是'video/x-flv'和'video/x-f4v'。这是一个新事物,还是来自一个时髦的来源或什么东西的文件?
我在this answer中提到Winista和URLMon都没有正确检测到swf或flv。这就是为什么你使用的php组件不能完全识别'video/x-flv'和'video/x-f4v'文件。
Winista使用魔术文件(其中包含MIME类型列表和各自的指示特定文件起始位的十六进制字符)。
我建议你关注为什么没有其他人能够添加flv检测到这个神奇的文件。 Winista项目是一个旧Java开源项目的端口。
我唯一的想法是尝试ffmpeg,也许它有智能检测这些flv和f4v文件的确切MIME类型。
我有类似的问题。 FileInfo在船上我的PHP 5.4.7(在XAMPP Windows下)能够检测.flv
文件video/x-flv
,但未能对.mkv
视频(应该将其检测为video/x-matroska
,但返回application/octet-stream
代替)和许多其他非典型的多媒体格式。
为了解决这个问题,我放弃了FileInfo的所有和恢复到老,好MIME-通过扩展方法,使用下面的函数:
public static function getMimeTypeByExtension($file)
{
$extensions = require('mimeTypes.php');
if(($ext=pathinfo($file, PATHINFO_EXTENSION))!=='')
{
$ext=strtolower($ext);
if(isset($extensions[$ext]))
return $extensions[$ext];
}
return null;
}
的mimeTypes.php
内容,你可以找到在pastebin.com。它由我编译,合并Apache SVN's mime.types
file和来自Yii Framework的类似mimeTypes.php
数组。结果集在文件扩展名和相应的MIME类型之间有超过1000个关系。
重要注意事项:在使用此解决方案之前,您必须仔细考虑,您需要它的目的是什么?通过简单地更改扩展名,基于文件扩展名的MIME类型可能很容易被欺骗。因此,任何与安全有关的代码段应尽可能远离我的解决方案,并保持为。
我需要它只是为了简单的目的,为flowplayer提供正确的MIME类型的视频文件。我认为,如果用户将此类文件的扩展名更改为其他内容,那么流式播放器将无法播放该电影。
在php中?小心分享该代码?检测MIME类型通常是不可靠的,例如我使用[winista,如果失败,我会返回URLMon](http://stackoverflow.com/a/8736109/495455)。听起来像你使用默认的代码回到一个八位字节流... –
泰克的链接,我会检查出来。 – user1559811