Medialibrary is a Laravel (5.4 and up) package that can associate all sorts of files with Eloquent models. It provides a simple, fluent API to work with. Here's a quick example:
The storage of the files is handled by Laravel's Filesystem, so you can plug in any compatible filesystem.
The package can also generate derived images such as thumbnails for images, video's and pdf's. Once you've set up your model, they're easily accessible: