devfactory / media
Laravel package for saving uploaded files and linking them with models
Installs: 11 588
Dependents: 1
Suggesters: 0
Security: 0
Stars: 17
Watchers: 7
Forks: 5
Open Issues: 2
Requires
- php: >=7.2
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
#Media
This package saves uploaded files and links them with models
Installation
Laravel 5
NOTE: If upgrading from 2.0.0, run
php artisan vendor:publish
andphp artisan migrate
Using Composer, edit your composer.json
file to require devfactory/media
.
"require": {
"devfactory/media": "2.0.*"
}
Then from the terminal run
composer update
Then in your app/config/app.php
file register the service providers:
'Devfactory\Media\MediaServiceProvider', 'That0n3guy\Transliteration\TransliterationServiceProvider',
From within the laravel folder of your project, run:
php artisan vendor:publish
Followed by:
php artisan migrate
Laravel 4
Using Composer, edit your composer.json
file to require devfactory/media
.
"require": {
"devfactory/media": "1.0.*"
}
Then from the terminal run
composer update
Then in your app/config/app.php
file register the service providers:
'Devfactory\Media\MediaServiceProvider', 'That0n3guy\Transliteration\TransliterationServiceProvider',
Run the migration to create the DB table:
php artisan migrate --package=devfactory/media
Finally, publish the config to make changes to where and how the files are stored:
php artisan config:publish devfactory/media
Usage
To use the package, you need to add the following to any of your models which will be receiving media uploads.
<?php class User extends Eloquent { use \Devfactory\Media\MediaTrait; );
Then to save a media, in the method that handles your form submission you just need to pass the File object to saveMedia()
:
public function upload() { $user = User::firstOrCreate(['id' => 1]); if (Input::hasFile('image')) { $user->saveMedia(Input::file('image')); } return Redirect::route('route'); }
This will create the file on the file system and insert an entry into the DB table media.
If you need to set multiple different types of images on a Model, like the users' profile picture and a background for their page you can use the second parameter:
$user->saveMedia(Input::file('profile_picture'), 'profile_picture'); $user->saveMedia(Input::file('background_image'), 'background_image');
To retrieve the images again, you just need to call getMedia()
:
// Retrieves every Media linked with the user $all_media = $user->getMedia(); // Retrieve a specific Media $profile_picture = $user->getMedia('profile_picture');
Finally you can delete media with deleteMedia()
:
// Delete all media for a user $user->deleteMedia(); // Delete specific media $user->deleteMedia('profile_picture');