2012-12-21 86 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類型的視頻文件。我認爲,如果用戶將此類文件的擴展名更改爲其他內容,那麼流式播放器將無法播放該電影。

相關問題