Как проверить продолжительность видео в laravel - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь проверить видео длительностью <= 30 секунд в laravel контроллере в дополнении statami c (не знаю, важна ли это деталь). </p>

Вот пользовательский валидатор с использованием 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 Illuminate\Http\UploadedFile

                $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');

Я получаю следующую ошибку:

 Owenoj\LaravelGetId3\GetId3::__construct() must be an instance of Illuminate\Http\UploadedFile, instance of Symfony\Component\HttpFoundation\File\UploadedFile given

1 Ответ

0 голосов
/ 06 августа 2020

Попробуйте использовать настраиваемое правило закрытия. Раньше пользовался без проблем. Также используйте правило 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.');
            }
        }
    ]
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...