【问题标题】:Laravel validation rule for max filesize does not work最大文件大小的 Laravel 验证规则不起作用
【发布时间】:2018-09-18 11:17:18
【问题描述】:

在我的 laravel 项目中,我的验证器的 sn-p 为

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

我希望一次最多上传 64 MB 的图片。我还在我的 php.ini 文件中将 max_upload_size 和 max_post_size 设置为 64 MB,并将 max_file_uploads 编辑为安全的高值。 当我尝试上传超过 64 MB 的文件时,它不应该返回错误消息并将我重定向到上一条消息吗? 但我收到了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 文件。如何阻止这种情况发生并安全地将用户重定向到带有验证错误消息的上一页??

【问题讨论】:

  • 请显示错误?
  • 你重启服务器了吗?

标签: php laravel file validation


【解决方案1】:

你得到这样的输出的原因是在控制到达你的行动之前发生了错误,因此你不能在你的控制器中做任何事情。

但如果你真的想捕获这个异常,你可以在Handler.phprender() 方法中添加自定义异常处理代码,该方法位于app/Exceptions 文件夹中。

我自己写过这样的代码,例如:

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

您必须指定 PostTooLargeException 类的完整路径,而不是 \Illuminate\Session\TokenMismatchException$exception 是前面指定的 render() 方法的参数。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 2023-04-02
    • 2018-10-17
    • 2016-09-22
    • 2018-09-16
    • 2019-01-03
    • 2020-03-01
    • 2018-11-09
    • 1970-01-01
    相关资源
    最近更新 更多