我有以下脚本:
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 :(得分: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
}