在一个项目中,我想上传视频。在我的请求中我使用了'path‘=> 'mimes:mp4,mov,avi,mpg,mpeg;quicktime|nullable',
上传.mov视频时,我总是收到错误消息“视频路径必须是一个文件类型: mp4,mov,avi,mpg,mpeg,quicktime”。视频的表情包类型是video/quicktime。
上传.mp4文件效果很好,还没有测试其他类型的视频。有谁有解决方案吗?
发布于 2018-02-05 18:09:30
如果验证对您无效,您可以手动检查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
发布于 2018-02-05 17:58:07
.mov只是一个容器。因此,也许mime类型/编解码器仍然是错误的。您应该首先使用这样的工具来验证这一点:https://mediaarea.net/。然而,作为您问题的解决方案(安全性较低),您只能验证扩展名(路径名)。

这里您看到了一个.mxf文件的示例,但是使用了MPEG编解码器来帮助您理解容器在大多数情况下并不只有一个mime类型(和编解码器)属于它。
仅验证文件扩展名的警告:这是非常不安全的,可能会导致各种麻烦。比如人们上传php文件或其他类型的文件。
发布于 2018-02-05 18:21:51
$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); https://stackoverflow.com/questions/48619723
复制相似问题