如何在laravel中验证视频持续时间



我正在尝试验证持续时间为<=的视频在一个statamic插件中的laravel控制器中30秒(我不知道这是否是一个重要的细节(。

以下是使用GetID3 的自定义验证器

Validator::extend('VideoLength', function($attribute, $value, $parameters, $validator) {
// validate the file extension
if(!empty($value->getClientOriginalExtension()) && ($value->getClientOriginalExtension() == 'mp4')){
//new GetId3() expected an instance of IlluminateHttpUploadedFile
$track = new GetId3($value);
$track->extractInfo();
$duration = $track->getPlaytime();
return(round($duration) > 30) ?false:true;
}else{
return false;
}
},'Video duration must be less then 30 seconds');

我得到的错误是:

OwenojLaravelGetId3GetId3::__construct() must be an instance of IlluminateHttpUploadedFile, instance of SymfonyComponentHttpFoundationFileUploadedFile given

尝试使用自定义闭包规则。我以前使用它没有问题。还可以使用mimetypes规则来限制文件类型。

request()->validate([
'video' => [
'required',
'mimetypes:video/mp4',
function ($attribute, $value, $fail) {
$video = new GetId3($value);
if ($video->getPlaytimeSeconds() > 30) {
$fail('The video must be shorter than 30 seconds.');
}
}
]
]);

相关内容

  • 没有找到相关文章

最新更新