Medialibrary can be installed via composer:
$ composer require spatie/laravel-medialibrary:^4.0.0
Next, you need to register the service provider:
'providers' => [
...
Spatie\MediaLibrary\MediaLibraryServiceProvider::class,
];
And publish and run the migration:
$ php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
$ php artisan migrate
Publishing the config file is optional:
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"
The config file contains a number of default values:
return [
'defaultFilesystem' => 'media',
'max_file_size' => 1024 * 1024 * 10,
'queue_name' => '',
'media_model' => Spatie\MediaLibrary\Media::class,
'custom_url_generator_class' => null,
'custom_path_generator_class' => null,
's3' => [
'domain' => 'https://xxxxxxx.s3.amazonaws.com',
],
];
Finally you should add a disk to app/config/filesystems.php
. All files added to the media library will be stored on that disk, this would be a typical configuration:
return [
...
'disks' => [
'media' => [
'driver' => 'local',
'root' => public_path('media'),
],
...
];
Don't forget to ignore the directory of your media disk. Using git? add a .gitignore file
to the directory where the media will be stored.
If you are planning on working with image manipulations it's recommended to configure a
queue on your service and specify it in the config file.
Want to use S3? Then follow Laravel's instructions on how to add the S3 Flysystem driver.