2013-08-19 56 views
1

我有以下腳本:如何檢查文件是視頻類型還是不在PHP?

function listFolderFiles($dir){ 
    $ffs = scandir($dir); 
    echo '<ol>'; 
    foreach($ffs as $ff){ 
     if($ff != '.' && $ff != '..'){ 
      echo '<li>'.$ff; 
      if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff); 
      echo '</li>'; 
     } 
    } 
    echo '</ol>'; 
} 
listFolderFiles('upload'); 

我的問題是要檢測一個文件是視頻(MP4或MOV)型,我怎麼可以檢測$ FF是視頻類型或沒有?

+0

如果你在* nix上,你可以使用'file'命令。 –

回答

4
if(end(explode(".",$ff)) =="mp4") 
{ 
echo "its an mp4 movie"; 
} 

你去那裏,爲擴展名的大小寫不敏感版本

<?php 
$ff="abc.MP4"; 
if(strtolower(end(explode(".",$ff))) =="mp4") 
{ 
echo "its an mp4 movie"; 
} 
?> 
+0

如果我上傳'mymovie.MP4'會怎麼樣? –

+0

你可以簡單地添加一個strtolower檢查 –

+0

如果我上傳'mymovie.mpeg4'會怎麼樣? –

0

可以achive與preg_match

if(preg_match('/^.*\.(mp4|mov)$/i', $filename)) 
    echo $filename; 
} 

您可以附加其他視頻分機,如:(mp4|mov|mpg|mpeg|wmv|mkv)

0

獲取上傳文件的MIME類型,並檢查類型如下,

$mime = $file->getMimeType; 
$videoJS = array('video/mp4','video/ogg','video/webm'); 

if(array_search($mime, $videoJS) !== false) { 
    //do upload 
} 
+2

如果你想要任何類型的代碼質量,請不要依賴客戶端提交的MIME類型。改用'file'。 –

2

請使用類似file的工具。這個答案是安全意識,並且是對上傳文件類型的一般迴應。使用file的第二個優點是它會告訴你更多關於使用格式的細節。有很多可以合法存儲在'* .mpg'文件內的格式組合。你可能無法處理所有這些問題。

我做了一個更詳細的網絡搜索,有一個重複的文本文章列表,但沒有發佈可靠的解決方案。以fileinfo的形式存在「魔術字節」檢測器。這被編譯成最新版本的PHP(它是一個標準的擴展)。

注:不建議使用mime_content_type()。同樣,如果你需要,嘗試fileinfo

+0

鏈接到文件已死 –

+1

@MainaWycliffe,呃是的。嘗試https://linux.die.net/man/1/file –

0
$fileType = exec('file --mime-type '.escapeshellarg($filePath)); //e.g. output -> /tmp/somefile.mov: video/quicktime 
$fileType = substr($fileType, strpos($fileType, ": ") + 2); //strip away file path -> video/quicktime 
$fileType = substr($fileType, 0,strpos($fileType, "/")); //strip away whatever video type -> video 
if ($fileType == 'video') $fileType = 'im a video!'; 

該代碼使用Unix的「文件」命令與--mime型選項,用來分析的輸出減少。不知道是否有更好的解析輸出的方法。

此外請確保您已閱讀您正在檢查的文件的許可權。

5
// Type contains video/mp4,video/avi,video/mpeg,video/mpg etc 
    if(preg_match('/video\/*/',$_FILES['add_image_image']['type'])): 
     echo "THIS IS A VIDEO FILE"; 
    else: 
      echo "NOT A VIDEO FILE";   
    endif; 
相關問題