think.studio/nova-chunked-video

Laravel Nova field to upload big size video using chunks.

3.0.3 2023-07-16 15:52 UTC

This package is auto-updated.

Last update: 2024-12-16 18:42:07 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

Laravel Nova field to upload big size video using chunks.

Versions targeting

Installation

You can install the package via composer:

composer require think.studio/nova-chunked-video
# optional publish configs
php artisan vendor:publish --provider="NovaChunkedVideo\FieldServiceProvider" --tag="config"

Usage

\NovaChunkedVideo\ChunkedVideo::make( 'Video', 'big_video' )
    ->acceptedTypes( 'video/mp4' )
    ->disk( 'my_private_disk' )
    ->store( function ( $filePath, $disk, $model, $attribute, $request ) {
        // something like delete old video and save new
        $model->big_video = $filePath;
        $model->save();
        
        // WARNING: response should return url.
        return Storage::disk($disk)->url($filePath);
    } )
    ->preview( function ($value, $disk, $model ) {
        return Storage::disk($disk)->url($value);
    } )
    ->download(function (NovaRequest $request, Model $model, ?string $disk, $value) {
        return $value ? Storage::disk($disk)->download($value) : null;
    })
    ->delete(function (NovaRequest $request, $model, ?string $disk, $value) {
        if ($value) {
            Storage::disk($disk)->delete($value);
        }
    
        return true;
    })
    ->help( 'Usually a large video: 0.5-2GB. Max size 3GB' ),

Credits

  • Think Studio