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
Using a custom directory structure
v3.9+
By default files will be stored inside a directory that uses
the id of it's Media-object as a name. Converted images will be stored inside a directory
names conversions.
Putting files inside their own folders guaranties that files with the same name can be added without any problems.
To override the default folder structure, a class that conforms to the PathGenerator-interface can be specified as the custom_path_generator_class in the config file.
Let's take a look at the interface:
namespaceSpatie\MediaLibrary\PathGenerator;
useSpatie\MediaLibrary\Media;
interfacePathGenerator
{
/**
* Get the path for the given media, relative to the root storage path.
*
* @param\Spatie\MediaLibrary\Media$media
*
* @returnstring
*/publicfunctiongetPath(Media $media);
/**
* Get the path for conversions of the given media, relative to the root storage path.
*
* @param\Spatie\MediaLibrary\Media$media
*
* @returnstring
*/publicfunctiongetPathForConversions(Media $media);
}
This example from the tests uses
the md5 value of media-id to name directories. The directories where conversions are stored will be named c instead of the default conversions.
There aren't any restrictions on how the directories can be named. When a Media-object gets deleted the package will delete its entire associated directory.
So make sure that every media gets it's own unique directory.