UP2 is a file uploader with polymorphic relations.

3.0.2 2020-10-12 10:59 UTC

This package is auto-updated.

Last update: 2023-11-12 17:57:22 UTC


For Laravel 4, please use the v1.x branch!

UP2 is a file uploader with polymorphic relations.


To get the lastest version of Theme simply require it in your composer.json file.

"teepluss/up2": "dev-master"

You'll then need to run composer install to download it and have the autoloader updated.

Once Theme is installed you need to register the service provider with the application. Open up app/config/app.php and find the providers key.

'providers' => [



UP2 also ships with a facade which provides the static syntax for creating collections. You can register the facade in the aliases key of your app/config/app.php file.

'aliases' => [

    'UP2' => Teepluss\Up2\Facades\Up2::class


Publish using artisan CLI.

php artisan vendor:publish --provider="Teepluss\Up2\Up2ServiceProvider"

Migrate tables.

php artisan migrate


The uploader configuration is located at app/config/up2.php. In this file you may specify which uploader driver you would like used by default throughout your application. UP2 supports Local and S3.

'drivers' => array(

    'local' => array(
        'baseUrl' => url(''),
        'baseDir' => path_public(),

    's3' => array(
        'key'    => '',
        'secret' => '',
        'region' => 'ap-southeast-1',
        'bucket' => 'teeplus',


Then you have to create a morph method for your model that want to use "UP2".

use Teepluss\Up2\Up2Trait;
use Illuminate\Database\Eloquent\Model;

class Blog extends Model {

    use Up2Trait;

    public function .....


Now you able to use "UP2" for uploading file.

Upload file and resizing.

// Return an original file meta.
UP2::upload(Blog::find(1), Input::file('userfile'))->getMasterResult();
UP2::upload(User::find(1), Input::file('userfile'))->getMasterResult();

// Return all results files uploaded including resized.
UP2::upload(Product::find(1), Input::file('userfile'))->resize()->getResults();

// If you have other fields in table attachments.
UP2::upload(User::find(1), Input::file('userfile'), array('some_id' => 999))->getMasterResult();

// UP2 can upload remote file.
UP2::inject(array('remote' => true))->upload(User::find(1), '', array('some_id' => 999))->getResults();

Upload without model.

UP2::upload(null, Input::file('userfile'))->getMasterResult();

Inject configuration.

UP2::inject(array('subpath' => 'uploads/products'))->upload(Blog::find(1), Input::file('userfile'))->getMasterResult();

Look up a file path.

$blogs = Blog::with('attachments')->get();

foreach ($blogs as $blog)
    foreach ($blog->attachments as $attachment)
        echo UP2::lookup($attachment->id);

        // or lookup with scale from config.
        echo UP2::lookup($attachment->id)->scale('l');

Remove file(s) from storage.

$attachmentId = 'b5540d7e6350589004e02e23feb3dc1f';

// Remove a single file.

// Remove all files including resized.
UP2::remove($attachmentId, true);

Support or Contact

If you have some problem, Please contact

Support via PayPal