Associating files | laravel-medialibrary | Spatie

 SPATIE

  Laravel Media Library
========================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-medialibrary](https://spatie.be/docs/laravel-medialibrary/v6)  Basic-usage  Associating files

 Version   v11   v10   v9   v8   v7   v6   v5   v4   v3

 Other versions for crawler [v11](https://spatie.be/docs/laravel-medialibrary/v11) [v10](https://spatie.be/docs/laravel-medialibrary/v10) [v9](https://spatie.be/docs/laravel-medialibrary/v9) [v8](https://spatie.be/docs/laravel-medialibrary/v8) [v7](https://spatie.be/docs/laravel-medialibrary/v7) [v6](https://spatie.be/docs/laravel-medialibrary/v6) [v5](https://spatie.be/docs/laravel-medialibrary/v5) [v4](https://spatie.be/docs/laravel-medialibrary/v4) [v3](https://spatie.be/docs/laravel-medialibrary/v3)

- [ Introduction ](https://spatie.be/docs/laravel-medialibrary/v6/introduction)
- [ Postcardware ](https://spatie.be/docs/laravel-medialibrary/v6/postcardware)
- [ Requirements ](https://spatie.be/docs/laravel-medialibrary/v6/requirements)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-medialibrary/v6/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-medialibrary/v6/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-medialibrary/v6/changelog)
- [ About us ](https://spatie.be/docs/laravel-medialibrary/v6/about-us)

Basic usage
-----------

- [ Preparing your model ](https://spatie.be/docs/laravel-medialibrary/v6/basic-usage/preparing-your-model)
- [ Associating files ](https://spatie.be/docs/laravel-medialibrary/v6/basic-usage/associating-files)
- [ Retrieving media ](https://spatie.be/docs/laravel-medialibrary/v6/basic-usage/retrieving-media)
- [ Working with collections ](https://spatie.be/docs/laravel-medialibrary/v6/basic-usage/working-with-collections)

Converting images
-----------------

- [ Defining conversions ](https://spatie.be/docs/laravel-medialibrary/v6/converting-images/defining-conversions)
- [ Retrieving converted images ](https://spatie.be/docs/laravel-medialibrary/v6/converting-images/retrieving-converted-images)
- [ Optimizing converted images ](https://spatie.be/docs/laravel-medialibrary/v6/converting-images/optimizing-converted-images)
- [ Regenerating images ](https://spatie.be/docs/laravel-medialibrary/v6/converting-images/regenerating-images)

Converting other file types
---------------------------

- [ Using image generators ](https://spatie.be/docs/laravel-medialibrary/v6/converting-other-file-types/using-image-generators)
- [ Creating a custom image generator ](https://spatie.be/docs/laravel-medialibrary/v6/converting-other-file-types/creating-a-custom-image-generator)

Advanced usage
--------------

- [ Working with multiple filesystems ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/working-with-multiple-filesystems)
- [ Generating custom urls ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/generating-custom-urls)
- [ Storing media specific manipulations ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/storing-media-specific-manipulations)
- [ Using your own model ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/using-your-own-model)
- [ Using a custom directory structure ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/using-a-custom-directory-structure)
- [ Ordering media ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/ordering-media)
- [ Consuming events ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/consuming-events)
- [ Overriding default filesystem behavior ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/overriding-the-default-filesystem-behaviour)
- [ Responding with media ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/responding-with-media)
- [ Using custom properties ](https://spatie.be/docs/laravel-medialibrary/v6/advanced-usage/using-custom-properties)

API
---

- [ Adding files ](https://spatie.be/docs/laravel-medialibrary/v6/api/adding-files)
- [ Defining conversions ](https://spatie.be/docs/laravel-medialibrary/v6/api/defining-conversions)

      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                                                                                                                                                                                                                                    `

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 copy, rather than move the original file 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](https://laravel.com/docs/validation).
