Php Laravel-视频文件验证

Php Laravel-视频文件验证,php,laravel,validation,Php,Laravel,Validation,这就是在laravel中验证视频文件的方法吗 $validator = Validator::make(Input::all(), array( 'file' => 'mimes:mp4,mov,ogg | max:20000' ) ); 因为即使上传的文件是mov类型,它也会返回文件应该是上面规则中列出的类型之一 我是如何解决它的: 根据下面答案的提示,我最终将上传文件的mime类型存储到$mime变量中,如下所示: $file = Input::file('fi

这就是在laravel中验证视频文件的方法吗

$validator = Validator::make(Input::all(),
  array(
    'file'  => 'mimes:mp4,mov,ogg | max:20000'
  ) 
);
因为即使上传的文件是mov类型,它也会返回文件应该是上面规则中列出的类型之一


我是如何解决它的:

根据下面答案的提示,我最终将上传文件的mime类型存储到
$mime
变量中,如下所示:

$file = Input::file('file');
$mime = $file->getMimeType();
然后必须编写一个if语句来检查视频mime类型:

if ($mime == "video/x-flv" || $mime == "video/mp4" || $mime == "application/x-mpegURL" || $mime == "video/MP2T" || $mime == "video/3gpp" || $mime == "video/quicktime" || $mime == "video/x-msvideo" || $mime == "video/x-ms-wmv") 
{
  // process upload
}

该代码正在检查扩展名,但没有检查MIME类型。您应该使用适当的MIME类型:

 Video Type     Extension       MIME Type
Flash           .flv            video/x-flv
MPEG-4          .mp4            video/mp4
iPhone Index    .m3u8           application/x-mpegURL
iPhone Segment  .ts             video/MP2T
3GP Mobile      .3gp            video/3gpp
QuickTime       .mov            video/quicktime
A/V Interleave  .avi            video/x-msvideo
Windows Media   .wmv            video/x-ms-wmv

如果您不确定要测试的文件的MIME类型,可以尝试
$file->getMimeType()

我给您以下扩展名
对于laravel验证

我知道这是一个老问题,但我今天遇到了同样的问题。Laravel不会验证.mov文件类型,即使我在验证器中有“mov”、“quicktime”或“video/quicktime”。文件上的getMimeType()显示“video/quicktime”,因此看起来很奇怪

深入研究Laravel的validator类,它似乎在使用guessExtension()而不是getMimeType()来检查文件。当我将'qt'作为mime类型放入验证器(这是guessExtension()返回的内容)时,它工作了。

您应该在类型中添加qt

$validator = Validator::make(Input::all(),
  array(
    'file'  => 'mimes:mp4,mov,ogg,qt | max:20000'
  ) 
);
使用这种模因类型

$this->validate($req, [
      'video' => 'required|mimes:mp4,ogx,oga,ogv,ogg,webm',
      ]);

这种格式适用于OGG文件上传。

在所有示例答案之后,您只需执行以下操作

if (false !== mb_strpos($image->getMimeType(), "image")) {
   echo('image');
} else {
   echo('video/something');
}

对于其他谷歌搜索模拟视频验证的用户,请使用以下命令:

'video' => 'mimetypes:video/x-ms-asf,video/x-flv,video/mp4,application/x-mpegURL,video/MP2T,video/3gpp,video/quicktime,video/x-msvideo,video/x-ms-wmv,video/avi'

因此,如果我试图只上传.mov文件,它应该像
'file'=>'mimes:video/quicktime | max:20000
,因为这也不允许我处理表单…你用getMimeType检查了吗?尝试删除max也用于调试mime类型。我删除了max size规则,并检查mime类型是否为quicktime类型,因为我正在数据库中保存mime类型的文件。我编写了一条if语句来检查mime类型并使其正常工作。虽然这不是我想要的,但我想使用验证器,以便能够向用户提供适当的消息。无论如何谢谢,我不知道为什么我不能用
mimes
添加规则。有没有办法将其添加到规则中,而不是使用if语句进行检查?尝试同样的方法,但使用自定义验证:至少对来自iphone 5的视频非常好。II需要验证mp4视频,但由于某些原因,它无法验证,我将“qt”验证放在mime中,现在它可以正常工作。我还将为mkv文件添加video/x-matroska