Medialibrary can be installed via composer:
$ composer require spatie/laravel-medialibrary
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'),
],
...
];
The package will add a .gitignore file to the directory where the media will be stored.
Using another versioning sytem than git? Don't forget to ignore the directory of your media disk.
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.