moirei / media-library
Manage media library with a directory system and associate files with Eloquent models.
0.1.1
2023-06-13 14:34 UTC
Requires
- php: ^7.2|^8.0
- illuminate/console: ^7.0|^8.0|^9.0
- illuminate/database: ^7.0|^8.0|^9.0
- illuminate/http: ^7.0|^8.0|^9.0
- illuminate/routing: ^7.0|^8.0|^9.0
- illuminate/support: ^7.0|^8.0|^9.0
- intervention/image: ^2.7
- intervention/imagecache: ^2.5
- league/flysystem: ^3.0
Requires (Dev)
- league/flysystem-aws-s3-v3: ^3.0
- orchestra/testbench: ^7.5
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
- thled/pest-plugin-shorthands: ^1.1
Suggests
- league/flysystem-aws-s3-v3: Required to use AWS S3 file storage
This package is auto-updated.
Last update: 2025-03-13 18:31:13 UTC
README
Laravel application media content management made easy.
Documentation
All documentation is available at the documentation site.
💚 Features
- Image URL manipulation: manipulate uploaded images with Cloud Image compatible API for your responsive frontend
- Eloquent models: associate files with Eloquent models. Attach different file types (video, images) to different model attributes with polymorphic many-to-many while having the ability to fully configure model-specific uploads.
- Secure: public, signed, and protected endpoints and file sharing and downloads regardless of storage disk. Includes configurable middleware per API endpoints for fine-grained permissions and authorization
- File sharing: securely share files a directories with anyone. Including none registered users.
- Uploads: upload by external URL, local path, File or request UploadFile. The package exposes internal API endpoints for uploads, downloads, streams and other admin operations
- Control: control uploads and shared files by types, size, size per type
- Responsive images: automatically resize images on uploads for responsive frontend
- Storage system: provides media storage namespacing for multi-tenant and multi-domain uploads with varying configurations.
- Rich text attachments: seamlessly management attachments and integrate model text fields
... use MOIREI\MediaLibrary\Casts\AsMediaItem; use MOIREI\MediaLibrary\Casts\AsMediaItems; use MOIREI\MediaLibrary\Traits\InteractsWithMedia; class Product extends Model { use InteractsWithMedia; $casts = [ 'image' => AsMediaItem::class, 'gallery' => AsMediaItems::class, ]; ... } ... $video = File::find('video-file-id'); $product = Product::create([ 'name' => 'MOIREI MP202+', 'image' => 'image-file-id1', 'gallery' => ['image-file-id2', $video], ]);
Installation
composer require moirei/media-library
Publish the config
php artisan vendor:publish --tag=media-library-config
Prepare the database
php artisan vendor:publish --tag=media-library-migrations
Then run the migrations
php artisan migrate
Changelog
Please see CHANGELOG.
Credits
- This package was inspired by classic-o/nova-media-library, an excellent package for Laravel Nova
- Augustus Okoye
License
The MIT License (MIT). Please see License File for more information.