Laravel

Validate Files with Laravel's Fluent File Rule

Validate Files with Laravel's Fluent File Rule

Set file types and size limits clearly.

  • 02 Oct, 2026
  • 31 Views

Validate Files with Laravel's Fluent File Rule

File uploads often need more than a simple required rule. You may need to restrict file types, set size limits, or accept images only.

Laravel's fluent File rule makes these requirements easier to read.

Basic Usage

use Illuminate\Validation\Rules\File;
$request->validate([
    'document' => [
        'required',
        File::types(['pdf', 'doc', 'docx'])
            ->max('5mb'),
    ],
]);

This accepts supported document types up to 5 MB. Laravel determines file types using the file's contents, not only its extension.

Validate Images

For profile photos or product images, use File::image():

$request->validate([
    'image' => [
        'required',
        File::image()
            ->max('2mb'),
    ],
]);

You can also restrict image dimensions:

$request->validate([
    'image' => [
        'required',
        File::image()
            ->dimensions(
                Rule::dimensions()
                    ->maxWidth(2000)
                    ->maxHeight(2000)
            )
            ->max('2mb'),
    ],
]);

Remember to import the dimensions rule:

use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\File;

Real-World Example

Imagine an e-commerce application where administrators upload product images. You want to accept images up to 2 MB and prevent excessively large dimensions.

$request->validate([
    'product_image' => [
        'required',
        File::image()
            ->max('2mb')
            ->dimensions(
                Rule::dimensions()
                    ->maxWidth(2000)
                    ->maxHeight(2000)
            ),
    ],
]);

This keeps the upload requirements together in one readable validation rule.

When Should You Use It?

  • Product image uploads
  • Profile photos
  • PDF documents
  • Resume uploads
  • Attachments in admin panels


Share: