Associating files

You can associate a file with a model like this:

$newsItem = NewsItem::find(1);
$newsItem
   ->addMedia($pathToFile)
   ->toMediaCollection();

The file will now be associated with the NewsItem instance and will be moved to the disk you've configured.

If you want to not move, but copy, the original file you can call preservingOriginal:

$newsItem
   ->addMedia($pathToFile)
   ->preservingOriginal()
   ->toMediaCollection();

You can also add a remote file to the media library:

$url = 'http://medialibrary.spatie.be/assets/images/mountain.jpg';
$newsItem
   ->addMediaFromUrl($url)
   ->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 a rule to validate uploads based on MIME type or file extension.