https://github.com/padosoft/laravel-uploadable
Laravel package for automatic upload handling with trait.
https://github.com/padosoft/laravel-uploadable
eloquent-models laravel laravel-package trait upload
Last synced: 9 months ago
JSON representation
Laravel package for automatic upload handling with trait.
- Host: GitHub
- URL: https://github.com/padosoft/laravel-uploadable
- Owner: padosoft
- License: mit
- Created: 2016-08-14T13:10:22.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-06-21T16:15:18.000Z (over 1 year ago)
- Last Synced: 2025-03-29T05:12:07.511Z (10 months ago)
- Topics: eloquent-models, laravel, laravel-package, trait, upload
- Language: PHP
- Size: 297 KB
- Stars: 28
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Auto upload handling with Eloquent models trait
[](https://packagist.org/packages/padosoft/laravel-uploadable)
[](LICENSE.md)
[](https://travis-ci.org/padosoft/laravel-uploadable)
[](https://scrutinizer-ci.com/g/padosoft/laravel-uploadable)
[](https://packagist.org/packages/padosoft/laravel-uploadable)
This package provides a trait that will automatic handlind upload when saving/updating/deleting any Eloquent model with upload form request.
##Requires
- php: >=7.1
- illuminate/database: ^5.7|^6.0|^7.0|^8.0|^9.0
- illuminate/support: ^5.7|^6.0|^7.0|^8.0|^9.0
- illuminate/http: ^5.7|^6.0|^7.0|^8.0|^9.0
- padosoft/io: "^1.9",
- padosoft/laravel-request: "^1.0|^2.0",
- padosoft/support: "^1.6|^2.1|^3.0.4"
-
## Installation
You can install the package via composer:
``` bash
$ composer require padosoft/laravel-uploadable
```
## Usage
Your Eloquent models should use the `Padosoft\Uploadable\Uploadable` trait and the `Padosoft\Uploadable\UploadOptions` class.
You can define `getUploadOptions()` method in your model.
Here's an example of how to implement the trait with implementation of getUploadOptions():
```php
uploadOptions){
return $this->uploadOptions;
}
$this->uploadOptions = UploadOptions::create()->getUploadOptionsDefault()
->setUploadBasePath(public_path('upload/' . $this->getTable()))
->setUploadsAttributes(['image', 'image_mobile']);
return $this->uploadOptions;
}
}
```
You can specified uploads attributes with:
```php
public function getUploadOptions() : UploadOptions
{
return UploadOptions::create()
->setUploadsAttributes(['image', 'image_mobile']);
}
```
You can set the base upload path for your model:
```php
public function getUploadOptions() : UploadOptions
{
return UploadOptions::create()
->setUploadBasePath(public_path('upload/news'));
}
```
You can set different path for each (or for some) upload attributes in your model:
```php
public function getUploadOptions() : UploadOptions
{
return UploadOptions::create()
->setUploadPaths(['image_mobile' => '/mobile' ]);
}
```
It support validation to accept files by specified list of Mime Type:
```php
public function getUploadOptions() : UploadOptions
{
return UploadOptions::create()
->setMimeType([
'image/gif',
'image/jpeg',
'image/png',
]);
}
```
By default every uploaded file will rename with `'original_name_'.$model->id.'.original_ext'`
but you can redefine a custom function for renaming file:
```php
/**
* Generate a new file name for uploaded file.
* Return empty string if $uploadedFile is null.
* @param \Illuminate\Http\UploadedFile $uploadedFile
* @param String $uploadField
* @return string
*/
public function generateNewUploadFileName(\Illuminate\Http\UploadedFile $uploadedFile, string $uploadField) : string
{
if($uploadField=='image'){
return 'pippo.jpg';
}else{
return 'pippo_mobile.jpg';
}
}
```
This class use Laravel 'local' Storage Disk for default.
You can set different disk in your model:
```php
public function getUploadOptions() : UploadOptions
{
return UploadOptions::create()
->setStorageDisk('ftp');
}
```
For all options see UploadOptions class.
## Change log
Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.
## Testing
``` bash
$ composer test
```
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
## Security
If you discover any security related issues, please email instead of using the issue tracker.
## Credits
- [Lorenzo Padovani](https://github.com/lopadova)
- [All Contributors](../../contributors)
## About Padosoft
Padosoft (https://www.padosoft.com) is a software house based in Florence, Italy. Specialized in E-commerce and web sites.
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.