如何在php中检查文件是否为视频类型?

时间:2013-08-19 06:41:57

标签: php file video mime-types

我有以下脚本:

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是一种视频类型?

9 个答案:

答案 0 :(得分:7)

    // 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;

答案 1 :(得分:6)

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";
}
?>

答案 2 :(得分:4)

使用mime_content_type mime_content_type php.net

if (mime_content_type($dir.'/'.$ff)=='video/mp4')
    echo "its mp4";

答案 3 :(得分:2)

请使用file之类的工具。此答案具有安全性,并且对上载的文件类型有一般性响应。使用file的第二个好处是它会告诉您有关所用格式的更多详细信息。有许多格式组合可以合法地存储在'* .mpg'文件中。你可能无法处理所有这些问题。

我做了一个更详细的网络搜索,有一个重复的文本文章列表,但没有发布可靠的解决方案。 fileinfo形式的“魔术字节”检测器。这被编译成最新版本的PHP(它的标准扩展名)。

注意:不推荐使用mime_content_type()。同样,如果您需要,请尝试fileinfo

答案 4 :(得分:1)

您可以使用preg_match

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

您可以附加另一个视频分机:(mp4|mov|mpg|mpeg|wmv|mkv)

答案 5 :(得分:1)

您也可以尝试一下。应该相当准确和高效

(0, 0, 0), (0, 0, 1), ...

答案 6 :(得分:0)

获取上传文件的mime类型并检查类似下面的类型

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

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

答案 7 :(得分: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&#39;文件&#39;命令使用选项--mime-type来最小化输出以便于解析。不确定是否有更好的解析输出的方法。

还要确保您具有正在检查的文件的读取权限。

答案 8 :(得分:0)

我使用以下代码:

$mimeType = mime_content_type(public_path('uploads/' . $file));
$fileType = explode('/', $mimeType)[0]; // video|image

if ($fileType === 'video') {
    // do something
}