Laravel-Mediable is a package for easily uploading and attaching media files to models with Laravel 5.
- Filesystem-driven approach is easily configurable to allow any number of upload directories with different accessibility.
- Many-to-many polymorphic relationships allow any number of media to be assigned to any number of other models without any need to modify the schema.
- Attach media to models with tags, to set and retrieve media for specific purposes, such as
- Easily query media and restrict uploads by MIME type, extension and/or aggregate type (e.g.
imagefor jpeg, png or gif).
Upload a file to the server, and place it in a directory on the filesystem disk named "uploads". This will create a Media record that can be used to refer to the file.
$media = MediaUploader::fromSource($request->file('thumb')) ->toDestination('uploads', 'blog/thumbnails') ->upload();
Attach the Media to another eloquent model with one or more tags defining their relationship.
$post = Post::create($this->request->input()); $post->attachMedia($media, ['thumbnail']);
Retrieve the media from the model by its tag(s).
Add the package to your Laravel app using composer
composer require plank/laravel-mediable
Register the package's servive provider in
'providers' => [ ... Plank\Mediable\MediableServiceProvider::class, ... ];
The package comes with a Facade for the image uploader, which you can optionally register as well.
'aliases' => [ ... 'MediaUploader' => Plank\Mediable\MediaUploaderFacade::class, ... ]
Publish the config file (
config/mediable.php) and migration file (
database/migrations/####_##_##_######_create_mediable_tables.php) of the package using artisan.
php artisan vendor:publish --provider="Plank\Mediable\MediableServiceProvider"
Run the migrations to add the required tables to your database.
php artisan migrate
Read the documentation here.
This package is released under the MIT license (MIT).
Plank is a web development agency based in Montreal, Canada.