think.studio/nova-chunked-video

Laravel Nova 字段,用于通过分块上传大视频。

3.0.3 2023-07-16 15:52 UTC

This package is auto-updated.

Last update: 2024-09-16 18:07:49 UTC


README

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

Laravel Nova 字段,用于通过分块上传大视频。

目标版本

安装

您可以通过 composer 安装此包

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

用法

\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' ),

致谢

  • Think Studio