Изменение размера и замена всех файлов в запросе Laravel в зависимости от размера - PullRequest
0 голосов
/ 03 октября 2018

В настоящее время я пишу промежуточное программное обеспечение, чтобы определить, когда файл загружается, чтобы манипулировать им.Цель состоит в том, чтобы обнаружить любые / все изображения в приложении, которые имеют высоту или ширину, превышающую 500 пикселей, и, если это произойдет, измените размер, прежде чем разрешить запрос продолжить.

На данный момент у меня есть этопромежуточное программное обеспечение с этим циклом изображения

class CheckImageSizes
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        //Get each of the files that are being uploaded in the request, if there are no files this will just be ignored.
        foreach (array_flatten($request->files->all()) as $file) {
            $image = Image::make($file);
            if($image->height() > 500 || $image->width() > 500){
                $image->resize(500, null, function ($constraint) {
                    $constraint->aspectRatio();
                });
                //Replace the image inside the request with the new $image here
            }
        }

        return $next($request);
    }
}

Внутри моего оператора if как бы я заменил изображение в запросе, а затем вернул его, чтобы, когда мой контроллер обрабатывал изображение, он обрабатывал вновь измененное изображение?

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете добавить изображение к запросу следующим образом:

$request->merge([
    'image' => $image
]);

https://laravel.com/api/5.7/Illuminate/Http/Request.html#method_merge

Проверка, является ли ввод файла:

foreach ($request->all() as $key => $item) {
    if ($item instanceof UploadedFile) {
        $image = Image::make($item);
        if($image->height() > 500 || $image->width() > 500){
            $image->resize(500, null, function ($constraint) {
                $constraint->aspectRatio();
            });
            $request->merge([$key => $image]);
        }
    }
}
...