Laravel - 视频文件验证

时间:2014-03-13 12:31:21

标签: php laravel validation

这是如何在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
}

6 个答案:

答案 0 :(得分:14)

该代码正在检查扩展名,但不检查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()

答案 1 :(得分:10)

http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

您应该在类型中添加 qt

$validator = Validator::make(Input::all(),
  array(
    'file'  => 'mimes:mp4,mov,ogg,qt | max:20000'
  ) 
);

答案 2 :(得分:3)

对于其他搜索mimes进行视频验证的google,请使用:

'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'

答案 3 :(得分:0)

我给你以下扩展名 laravel验证MIME types

答案 4 :(得分:0)

使用此meme类型

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

此格式适用于OGG文件上传。

答案 5 :(得分:0)

在所有示例答案之后,您只是做了类似的事情

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