Правило проверки Laravel для максимального размера файла не работает - PullRequest
0 голосов
/ 18 сентября 2018

enter image description here В моем проекте laravel у меня есть этот фрагмент моего валидатора как

$this->validate($request,
    ['name'=>'required|unique:activities,name,'.$request->id,
    'images.*'=>'image|max:65536',
    'description'=>'required'
    ]
    );

Я хочу, чтобы одновременно загружалось максимум 64 МБ изображений.Я также установил max_upload_size и max_post_size равными 64 МБ в моем файле php.ini, а также отредактировал max_file_uploads до безопасного высокого значения.Разве это не должно возвращать сообщение об ошибке и перенаправлять меня к предыдущему сообщению, когда я пытаюсь загрузить файлы выше 64 МБ ??Но я получаю сообщение PostTooLargeException с

    public function handle($request, Closure $next)
{
    $max = $this->getPostMaxSize();

    if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
        throw new PostTooLargeException;
    }

    return $next($request);
}

Почему это происходит ??Большинство ответов направляют меня на редактирование файла php.ini, который я уже сделал.Как мне предотвратить это и безопасно перенаправить пользователя на предыдущую страницу с сообщениями об ошибках проверки ??

1 Ответ

0 голосов
/ 18 сентября 2018

Причина, по которой вы получаете такой вывод, заключается в том, что ошибка произошла до того, как контроль достигнет вашего действия, поэтому вы не можете ничего с этим поделать в своем контроллере.

Но если вы действительно хотите перехватить это исключение, вы можете добавить свой собственный код обработки исключений в render() метод Handler.php, который доступен в папке app/Exceptions.

Я сам написал такой код, например:

if ($exception instanceof \Illuminate\Session\TokenMismatchException) {

Вместо \Illuminate\Session\TokenMismatchException вам нужно будет указать полный путь к классу PostTooLargeException. $exception является аргументом для метода render(), указанного ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...