digital-creative/nova-filepond

Nova 字段,用于使用 filepond 上传文件、图片和视频。

资助包维护!
milewski

v1.0.6 2024-01-31 04:51 UTC

README

Latest Version on Packagist Total Downloads License

Nova 字段,用于使用 Filepond 上传文件、图片和视频。

安装

您可以通过 composer 安装此包。

composer require digital-creative/nova-filepond

特性

  • 单/多文件上传
  • 可排序的文件
  • 预览图片、视频和音频
  • 启用/禁用预览
  • 扩展原始 Laravel Nova 文件字段,为您提供默认文件上传的所有方法/功能。
  • 拖放文件
  • 直接从剪贴板粘贴文件
  • 存储自定义属性(原始文件名、大小等)
  • 可删除文件(当模型被删除时自动删除文件)
  • 支持暗黑模式

用法

该字段扩展了原始 Laravel Nova 文件字段,因此您可以使用原始字段中所有可用的方法。

基本用法

use DigitalCreative\Filepond\Filepond;

class Post extends Resource
{
    public function fields(NovaRequest $request): array
    {
        return [
            Filepond::make('Images', 'images')
                ->rules('required')
                ->prunable()
                ->disablePreview()
                ->multiple() 
                ->limit(4),
        ];
    }
}

当上传多个文件时,您需要在模型类中将属性转换为数组。

class Post extends Model {
 
    protected $casts = [
        'images' => 'array'
    ];

}

您还可以使用 storeOriginalNamestoreOriginalSize 方法存储原始文件名/大小。

use DigitalCreative\Filepond\Filepond;

class Post extends Resource
{
    public function fields(NovaRequest $request): array
    {
        return [
            Filepond::make('Images', 'images')
                ->storeOriginalName('name')
                ->storeSize('size')
                ->multiple(),
            
            // or you can manually decide how to store the data
            // Note: the store method will be called for each file uploaded and the output will be stored into a single json column
            Filepond::make('Images', 'images')
                ->multiple()
                ->store(function (NovaRequest $request, Model $model, string $attribute): array {
                    return [
                        $attribute => $request->images->store('/', 's3'),
                        'name' => $request->images->getClientOriginalName(),
                        'size' => $request->images->getSize(),
                        'metadata' => '...'
                    ];
                })
        ];
    }
}

注意:当使用 storeOriginalNamestoreSize 方法时,如果您处于“单文件”模式,您需要将列添加到您的数据库表中。

⭐️ 展示您的支持

如果此项目对您有帮助,请给予 ⭐️!

您可能还喜欢的其他包

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件