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