Laravel.mov 验证

Laravel .mov validation

在项目中我想上传视频。在我的请求中,我使用 'path' => 'mimes:mp4,mov,avi,mpg,mpeg;quicktime|nullable',

上传 .mov 视频时,我总是收到错误 "The video path must be a file of type: mp4, mov, avi, mpg, mpeg, quicktime."。视频的表情包类型是video/quicktime.

上传 .mp4 文件完美无缺,尚未对其他视频类型进行测试。有人有解决办法吗?

.mov 只是一个容器。所以也许 mime 类型/编解码器仍然是错误的。您应该首先使用如下工具验证这一点:https://mediaarea.net/。但是,作为解决您的问题(不太安全)的方法,您只能验证扩展名(路径名)。

在这里您可以看到一个 .mxf 文件的示例,但带有 MPEG 编解码器以帮助您了解容器在大多数情况下并不只有一种属于它的 mime 类型(和编解码器)。

仅验证文件扩展名的警告:这是非常不安全的,可能会导致各种麻烦。喜欢人们上传 php 个文件或其他类型的文件。

如果验证不适合您,您可以手动检查 mime 类型:

$video = Input::file('path');
$mime = $video->getMimeType();

$accepted_mimes = array("video/x-flv", "video/mp4", "application/x-mpegURL", 
                                                      "video/MP2T", "video/3gpp", "video/quicktime", 
                                                      "video/x-msvideo", "video/x-ms-wmv");

if(in_array($mime, $accepted_mimes)) {
    //valid video format begin upload
} else {
       //invalid video mime type
       // return back with errors
       return redirect->back()->withErrors(['msg', 'Invalid video']);
}

所有可用 mime 类型的列表see here

            $Video= request('PostDetailsVideo');//this is name of posted file
            $rules=[
                'PostDetailsVideo' => 'required|mimetypes:video/x-ms-wmv,video/x-msvideo,video/quicktime,video/3gpp,video/MP2T,application/x-mpegURL,video/mp4,video/x-flv|max:32768'
            ];
            $CheckIsVideo = Validator::make($request->all(),$rules);
            if($CheckIsVideo->fails()){//this not video
                return response()->json([
                    'Success'=> false,
                ], 200);
            }
            else
                return response()->json([
                    'Success'=> true,
                ], 200);