2012-12-21 51 views
1

当我在php中查找我的.flvf4v的MIME类型时,它将它们表示为:application/octet-stream。.flv和.f4v文件扩展名,显示意外的MIME类型

我一直认为这些文件的MIME类型是'video/x-flv'和'video/x-f4v'。这是一个新事物,还是来自一个时髦的来源或什么东西的文件?

+0

在php中?小心分享该代码?检测MIME类型通常是不可靠的,例如我使用[winista,如果失败,我会返回URLMon](http://stackoverflow.com/a/8736109/495455)。听起来像你使用默认的代码回到一个八位字节流... –

+0

泰克的链接,我会检查出来。 – user1559811

回答

1

我在this answer中提到Winista和URLMon都没有正确检测到swf或flv。这就是为什么你使用的php组件不能完全识别'video/x-flv'和'video/x-f4v'文件。

Winista使用魔术文件(其中包含MIME类型列表和各自的指示特定文件起始位的十六进制字符)。

我建议你关注为什么没有其他人能够添加flv检测到这个神奇的文件。 Winista项目是一个旧Java开源项目的端口。

我唯一的想法是尝试ffmpeg,也许它有智能检测这些flv和f4v文件的确切MIME类型。

0

我有类似的问题。 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类型的视频文件。我认为,如果用户将此类文件的扩展名更改为其他内容,那么流式播放器将无法播放该电影。

相关问题