sparemusic/resumable-js

1,437 1
Install
composer require sparemusic/resumable-js
Latest Version:v1.0.2
Laravel:5
License:MIT
Last Updated:Nov 16, 2019
Links: GitHub  ·  Packagist
Maintainer: RaymondWilkinson

Laravel ResumableJS

Installation

This package can be used in Laravel 5.4 or higher.

You can install the package via composer:

composer require sparemusic/resumable-js

In Laravel 5.5 the service provider will automatically be registered. In older versions of Laravel, add the service provider in the config/app.php file:

'providers' => [
    // ...
    SpareMusic\ResumableJS\Providers\ResumableServiceProvider::class,
];

Usage

Resumable Request

To create a resumable request class, use the make:resumable-request Artisan CLI command:

php artisan make:resumable-request SomeUpload

The generated class will be placed in the app/Http/ResumableRequests directory. If this directory does not exist, it will be created when you run the make:resumable-request command. Inside of this class there will be a setup method which will setup the upload.

/**
 * Setup resumable instance
 */
public function setup()
{
    $chunkPath = Storage::disk('local')->path('chunks');
    $uploadPath = Storage::disk('local')->path('uploads');

    $this->setChunkPath($chunkPath)
        ->setUploadPath($uploadPath)
        ->setValidator(function (UploadedFile $file, ResumableParameters $parameters) {
            return true;
        });
}

The $chunkPath variable is the directory to store all the chunks of the uploaded file (the directory will be created if it doesn't already exist).
The $uploadPath variable is the directory to store the completed upload (the directory will be created if it doesn't already exist).
The validator validates the uploaded file. If it returns false, it cancels the upload. Otherwise, it continues running.

Routing

To create the routes needed for a resumable upload, you can use the Route::resumable() method.

Route::resumable("/upload", "UploadController@upload");

You could also do this manually.

Route::get("/upload", "UploadController@upload");
Route::post("/upload", "UploadController@upload");

Controller

All you need to do is type-hint the resumable request on your controller method. This will setup up the resumable upload:

public function upload(SomeUpload $upload)
{
    $upload->process();

    if ($upload->isComplete()) {
        // File uploaded, do something with file
        // $upload->getFilename(true); filename with extension
        // $upload->getFilepath(); full filepath
    }

    return $upload->respond();
}

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

648,266,899 9,701
laravel/framework

The Laravel Framework.

604,216,237 34,982
laravel/tinker

Powerful REPL for the Laravel framework.

512,508,631 7,443
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

429,221,767 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

403,217,078 4,664

Version History

Version Released Laravel License
v1.0.2 ^5.0.0 MIT
v1.0.1 ^5.0.0 MIT
v1.0.0 ^5.0.0 MIT