hamidrezaniazi / upolo
Laravel package for uploading files.
Requires
- php: ^8.0
- illuminate/support: ^9.0
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-12-23 21:56:45 UTC
README
Installation
You can install the package via composer:
composer require hamidrezaniazi/upolo
You can publish the migration with:
php artisan vendor:publish --provider="Hamidrezaniazi\Upolo\UpoloServiceProvider" --tag="migrations"
After publishing the migration you can create the files table by running the migrations:
php artisan migrate
Usage
You can persist uploaded files using the facade:
$file = Upolo::upload($uploadedFile)
If you want to add options in your file model during persisting, use this:
$file = Upolo::upload($uploadedFile, $user, $owner, $disk, $flag)
Owner is related to your file with a polymorphic relation and should implement from HasFileInterface and use the trait HasFileTrait like this:
<?php class Owner extends Model implements HasFileInterface { use HasFileTrait;
Available filter scopes are:
//Filter by owner Upolo::whereOwnerIs($owner)->get(); //Filter by owner id Upolo::whereOwnerIdIs($ownerId)->get(); //Filter by owner type Upolo::whereOwnerTypeIs($ownerType)->get(); //Filter by creator Upolo::whereCreatorIs($creator)->get(); //Filter by creator id Upolo::whereCreatorIdIs($creatorId)->get(); //Filter by flag Upolo::whereFlagIs($flag)->get(); //Filter by type Upolo::whereTypeIs($type)->get();
Type is filled automatically based on mime type and includes image, video, application, etc.
Also you can filter files via request in your controller. The keys bellow are available for filtering that you can send via query string:
- owner_id
- owner_type
- creator_id
- type
- flag
For request filtering the index function of your controller should be like this:
<?php class FileController extends Controller { /** * @param FileFilters $filters * @return AnonymousResourceCollection */ public function index(FileFilters $filters): AnonymousResourceCollection { return FileResource::collection(File::filter($filters)->paginate()); }
Deleting file from storage and database is accessible with delete method:
$file->delete();
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email hamidrezaniazi@yahoo.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.