gpt4 book ai didi

php - 如何在 Laravel 中捕获 PostTooLargeException?

转载 作者:行者123 更新时间:2023-12-03 07:45:18 25 4
gpt4 key购买 nike

要重现错误,只需将超过 php.ini 配置中的 post_max_size 的文件上传到 Laravel 中的任何 POST 路由。

我的目标是简单地捕获错误,以便通知用户他上传的文件太大。说:

public function postUploadAvatar(Request $request)
try {
// Do something with $request->get('avatar')
// Maybe validate file, store, whatever.
} catch (PostTooLargeException $e) {
return 'File too large!';
}
}

以上代码在标准的 Laravel 5 (PSR-7) 中。它的问题是,一旦注入(inject)的请求发生错误,该函数就无法执行。因此无法在函数内捕获它。那么如何捕捉呢?

最佳答案

Laravel 使用它的 ValidatePostSize 中间件来检查请求的 post_max_size 然后抛出 PostTooLargeException 如果 CONTENT_LENGTH 请求太大。这意味着异常在到达您的 Controller 之前就已抛出。

您可以在 App\Exceptions\Handler 中使用 render() 方法,例如

public function render($request, Exception $exception)
{
if ($exception instanceof PostTooLargeException) {
return response('File too large!', 422);
}

return parent::render($request, $exception);
}

请注意,您必须从此方法返回一个响应,您不能像从 Controller 方法那样只返回一个字符串。

上面的响应是复制 return 'File too large!'; 你在你的问题的例子中,你显然可以把它改成别的东西。

希望这对您有所帮助!

关于php - 如何在 Laravel 中捕获 PostTooLargeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com