Detect Image upload on Laravel through middleware

2019-07-13 02:28发布

问题:

I'm looking at being able to have a image detect in a global middleware on Laravel.

My goal is to make the middleware, detect if there is currently an image being uploaded, and then detect its size and manipulate it.

Is this possible?

I've inherited a project, and need to manipulate every global image upload, but there are far too many individual scripts to change them all separately, I need some sort of way to change them all globally.

I'm open to suggestions!

回答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);
    }
}