antoninmasek / laravel-max-upload-size-rule
Adds Rule::file()->maxUploadSize() validation rule, which will validate filesize against `upload_max_filesize` php.ini setting
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- spatie/laravel-ray: ^1.35
README
On a few projects I've worked on, I noticed, that quite often we want to allow the max file size to be the same as our setting inside php.ini. Over time the value inside php.ini might change due to different requirements, but the validation rules usually stay the same until some user hits the rule and it prevents them from proceeding.
Thanks to this rule the max file size is automatically loaded based on the current php.ini setting hence it stays in sync.
Installation
You can install the package via composer:
composer require antoninmasek/laravel-max-upload-size-rule
Basic usage
Validator::make(['file', $file], [Rule::file()->maxUploadSize()]); Validator::make(['file', $file], [new MaxUploadSizeRule()]);
Files larger than max_upload_size
Please note, that if the file is larger than max_upload_size
, then you will receive the following error message: "The
file failed to upload.". The reason is, that even if you try to inspect the uploaded file you will find out, that it has
an error and is not uploaded, because it exceeds the limit.
Files larger than post_max_size
In this case, Laravel will throw an exception. In production, you might see "413 Content Too Large" and in debug mode, you would see "PostTooLargeException".
Why use the rule then
As mentioned above - thanks to this you will have the max allowed filesize in sync with the
php.ini
, so it basically means you are using the existing max rule, but it always uses the current setting based on
php.ini
. In all other ways, it behaves exactly like the max rule.
Testing
composer test
Credits
License
The MIT License (MIT). Please see License File for more information.