Почему я получаю "выбросить новое исключение PostTooLargeException";ошибка при попытке загрузить файл размером 10 МБ при наличии правила проверки "размер: 1000" - PullRequest
2 голосов
/ 08 ноября 2019

Всякий раз, когда я пытаюсь загрузить файл размером 10 МБ, я получаю эту ошибку "throw new PostTooLargeException;", поскольку мой файл php.ini не позволяет загружать такие большие файлы, однако я не уверен, почему моя проверка не перехватываетЭто. У меня есть это правило:

    $this->validate($request, [
        'files' => 'required|mimes:jpeg,bmp,png|size:1000'
    ]);

Разве это не разрешило бы попытку загрузки и просто перенаправило меня обратно на страницу загрузки?

Ответы [ 3 ]

1 голос
/ 08 ноября 2019

Измените ограничение максимального размера в php.ini

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size

; from
; post_max_size = 8M
; to
post_max_size = 11M

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize

; from
; upload_max_filesize = 2M

; to
upload_max_filesize = 11M

И перезапустите службу PHP FPM

В противном случае вы можете обработать выданную ошибку в App\Exceptions\Handler

public function render($request, Exception $exception)
{
    if ($exception instanceof \Illuminate\Http\Exceptions\PostTooLargeException) {
        return response([
            'error' => 'Customize the error message here'
        ], 422);
    }
    return parent::render($request, $exception);
}

422 Код состояния HTTP:

enter image description here

Надеюсь, это поможет

0 голосов
/ 08 ноября 2019

Веб-запрос обрабатывался последовательно веб-сервером (Nginx, Apache), затем fpm, где здесь работает php.ini, наконец, уровнем приложения Laravel.

В каждом периоде процессазапрос при этом оформляется в соответствии с относительной конфигурацией.

Только когда запрос соответствует текущим правилам, он может быть передан следующему процессу.

0 голосов
/ 08 ноября 2019

Перед запуском laravel core, php попробуйте загрузить этот файл, и он имеет ограничение по php.ini

Просто установите в php.ini значение более 10 МБ

Я также хочу добавить. ... если у вас есть несколько php.ini, и вы не уверены, какой из них использует ваше приложение. Вы можете проверить это, проверив вывод php_info (). Однажды я столкнулся с трудностями редактирования неправильного php.ini

...