當我在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