2017 © Pedro Peláez
 

library laravel-uploadable

Laravel package for automatic upload handling with trait

image

padosoft/laravel-uploadable

Laravel package for automatic upload handling with trait

  • Friday, March 31, 2017
  • by lopadova
  • Repository
  • 3 Watchers
  • 25 Stars
  • 117 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 5 Versions
  • 7 % Grown

The README.md

Auto upload handling with Eloquent models trait

Latest Version on Packagist Software License Build Status Quality Score Total Downloads, (*1)

This package provides a trait that will automatic handlind upload when saving/updating/deleting any Eloquent model with upload form request., (*2)

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, (*3)


## 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 <?php namespace App; use Padosoft\Uploadable\Uploadable; use Padosoft\Uploadable\UploadOptions; use Illuminate\Database\Eloquent\Model; class YourEloquentModel extends Model { use Uploadable; /** * Retrive a specifice UploadOptions for this model, or return default UploadOptions * @return UploadOptions */ public function getUploadOptions() : UploadOptions { if($this->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:, (*4)

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setUploadsAttributes(['image', 'image_mobile']);
}

You can set the base upload path for your model:, (*5)

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:, (*6)

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setUploadPaths(['image_mobile' => '/mobile' ]);
}

It support validation to accept files by specified list of Mime Type:, (*7)

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:, (*8)

/**
 * 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:, (*9)

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setStorageDisk('ftp');
}

For all options see UploadOptions class., (*10)

Change log

Please see CHANGELOG for more information what has changed recently., (*11)

Testing

bash $ composer test, (*12)

Contributing

Please see CONTRIBUTING for details., (*13)

Security

If you discover any security related issues, please email instead of using the issue tracker., (*14)

Credits

About Padosoft

Padosoft (https://www.padosoft.com) is a software house based in Florence, Italy. Specialized in E-commerce and web sites., (*15)

License

The MIT License (MIT). Please see License File for more information., (*16)

The Versions

14/08 2016

1.0.0

1.0.0.0 https://github.com/padosoft/laravel-uploadable

Laravel package for automatic upload handling with trait

  Sources   Download

MIT

The Requires

 

The Development Requires

padosoft laravel-uploadable