You are viewing the documentation for an older version of this package. You can check the version you are using with the following command:
composer show spatie/laravel-medialibrary
You can associate a file with a model like this:
$yourModel = YourModel ::find (1);
$yourModel
->addMedia ($pathToFile )
->toMediaCollection ();
The file will now be associated with the YourModel
instance and will be moved to the disk you've configured.
Keep in mind you can only add media after the model was saved. The media library needs an existing database row to associate media with.
If you want to not move, but copy, the original file you can call preservingOriginal
:
$yourModel
->addMedia ($pathToFile )
->preservingOriginal ()
->toMediaCollection ();
You can also add a remote file to the media library:
$url = 'http://medialibrary.spatie.be/assets/images/mountain.jpg ';
$yourModel
->addMediaFromUrl ($url )
->toMediaCollection ();
If a file already exists on a storage disk, you can also add it to the media library:
$yourModel
->addMediaFromDisk ('/path/to/file ', 's3 ')
->toMediaCollection ();
The media library does not restrict what kinds of files may be uploaded or associated with models. If you are accepting file uploads from users, you should take steps to validate those uploads, to ensure you don't introduce security vulnerabilities into your project. Laravel has a rule to validate uploads based on MIME type or file extension .
# # Are you a visual learner?
Here's a video that shows how to associate files.
VIDEO
Want to see more videos like this? Check out our free video course on how to use Laravel Media Library .