Overriding the default filesystem behavior | laravel-medialibrary | Spatie

 SPATIE

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

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-medialibrary](https://spatie.be/docs/laravel-medialibrary/v4)  Advanced-usage  Overriding the default filesystem behavior

 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/v4/introduction)
- [ Postcardware ](https://spatie.be/docs/laravel-medialibrary/v4/postcardware)
- [ Requirements ](https://spatie.be/docs/laravel-medialibrary/v4/requirements)
- [ Installation &amp; setup in Laravel ](https://spatie.be/docs/laravel-medialibrary/v4/installation-setup-in-laravel)
- [ Installation &amp; setup in Lumen ](https://spatie.be/docs/laravel-medialibrary/v4/installation-setup-in-lumen)
- [ Questions and issues ](https://spatie.be/docs/laravel-medialibrary/v4/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-medialibrary/v4/changelog)
- [ About us ](https://spatie.be/docs/laravel-medialibrary/v4/about-us)

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

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

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

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

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

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

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

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

API
---

- [ Adding files ](https://spatie.be/docs/laravel-medialibrary/v4/api/adding-files)
- [ Defining conversions ](https://spatie.be/docs/laravel-medialibrary/v4/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                                                                                                                                                                                                                                    `

Overriding the default filesystem behavior
==========================================

The `Spatie\MediaLibrary\Filesystem` class contains the behavior for actions like adding files, renaming files and deleting files. It applies these actions to the disks (local, S3, etc) that you configured.

If you want to override the default behavior you can create your own Filesystem implementation by implementing `Spatie\MediaLibrary\FilesystemInterface`. You then bind your own class to the service container in the AppServiceProvider:

```
use App\CustomFilesystem;
use Spatie\MediaLibrary\FilesystemInterface;

class AppServiceProvider extends ServiceProvider
{
    ...
    public function register()
    {
        $this->app->bind(FilesystemInterface::class, CustomFilesystem::class);
    }
}
```

Generally speaking you do not want to mess with this class, so only override this if you know what you're doing.
