Medialibrary can be installed via composer:
$ composer require spatie/laravel-medialibrary:^5.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,
'image_driver' => 'gd',
'custom_url_generator_class' => null,
'custom_path_generator_class' => null,
's3' => [
'domain' => 'https://xxxxxxx.s3.amazonaws.com',
],
'remote' => [
'extra_headers' => [
'CacheControl' => 'max-age=604800',
],
],
'image_generators' => [
Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class,
],
'ffmpeg_binaries' => '/usr/bin/ffmpeg',
'ffprobe_binaries' => '/usr/bin/ffprobe',
];
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 so the files won't end up in your git repo.
If you are planning on working with image manipulations it's recommended to configure a queue on your server and specify it in the config file.
Want to use S3? Then follow Laravel's instructions on how to add the S3 Flysystem driver.