Валідація розмірів зображень за допомогою правила dimensions у Laravel

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Laravel пропонує потужні можливості валідації зображень за допомогою правила розмірів, що дозволяє контролювати розміри та пропорції медіа, завантажуваних у вашій програмі. Дізнайтеся, як реалізувати стратегічний підхід до валідації зображень і забезпечити оптимальну якість медіа в нашій статті

Laravel надає потужні можливості для валідації зображень за допомогою правила dimensions, що дозволяє детально контролювати розміри та пропорції медіафайлів під час їх завантаження у вашу програму

Простий приклад реалізації демонструє гнучкість цього правила:

use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;

// Основна валідація
$validator = Validator::make($request->all(), [
    'profile_photo' => [
        'required',
        Rule::dimensions()
            ->minWidth(400)
            ->minHeight(400)
            ->maxWidth(2000)
            ->maxHeight(2000)
    ]
]);

Ось як реалізувати комплексну стратегію валідації зображень у системі управління медіа:

class MediaController extends Controller
{
    public function upload(Request $request)
    {
        $imageType = $request->input('type', 'standard');

        $rules = [
            'image' => array_merge(
                ['required', 'image', 'max:10240'], // максимальний розмір 10 МБ
                $this->getDimensionRules($imageType)
            )
        ];

        $request->validate($rules);

        // Обробка та збереження валідаційного зображення
        $path = $request->file('image')->store('media/' . $imageType);

        return response()->json([
            'success' => true,
            'path' => $path
        ]);
    }

    protected function getDimensionRules(string $type): array
    {
        return match($type) {
            'thumbnail' => [
                Rule::dimensions()
                    ->width(300)
                    ->height(300)
            ],
            'hero' => [
                Rule::dimensions()
                    ->minWidth(1200)
                    ->minHeight(600)
                    ->maxHeight(800)
                    ->ratio(2)
            ],
            'gallery' => [
                Rule::dimensions()
                    ->minWidth(800)
                    ->minHeight(600)
                    ->maxWidth(3000)
                    ->maxHeight(2000)
            ],
            default => [
                Rule::dimensions()
                    ->minWidth(400)
                    ->minHeight(400)
            ]
        };
    }
}

Правило dimensions гарантує оптимальну якість зображень у вашій програмі, запобігаючи проблемам зі зберіганням та пропускною здатністю через неправильно підібрані uploads

Популярні

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!