Spatie media library allows you to read incoming files, save their data and associations to a table, and save these files in a folder.
Preparing model: https://spatie.be/docs/laravel-medialibrary/v11/basic-usage/preparing-your-model
Associating files:
https://spatie.be/docs/laravel-medialibrary/v11/basic-usage/associating-files
Retrieving/ deleting media:
https://spatie.be/docs/laravel-medialibrary/v11/basic-usage/retrieving-media