通过中间件检测Laravel上的图像上传

时间:2018-05-04 09:01:56

标签: php laravel-5 middleware

我正在考虑能够在middleware上的全局Laravel中检测图像。

我的目标是制作middleware,检测当前是否有上传的图片,然后检测其大小并进行操作。

这可能吗?

我继承了一个项目,并且需要操纵每个全局图像upload,但是有太多单独的脚本需要单独更改它们,我需要某种方式来全局更改它们。 / p>

我愿意接受建议!

1 个答案:

答案 0 :(得分:1)

<?php

namespace App\Http\Middleware;

use Closure;
use Symfony\Component\HttpFoundation\Response;

class ImageInterceptorMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        foreach (array_flatten($request->files->all()) as $file) {
            $size = $file->getClientSize(); // size in bytes!

            $onemb = pow(1024, 2); // https://stackoverflow.com/a/2510446/6056864

            if ($size > $onemb) {
                abort(Response::HTTP_UNPROCESSABLE_ENTITY);
            }
        }

        return $next($request);
    }
}