Medialibrary is a Laravel package that can associate all sorts of files with Eloquent models. It can create derived images (think thumbnails) and store your files on any filesystem you want (think S3, Dropbox).
https://github.com/spatie/laravel-medialibrary