dbt/laravel-filepond

Laravel的Filepond服务器实现

v0.1.1 2020-09-18 17:00 UTC

This package is auto-updated.

Last update: 2024-09-19 01:43:15 UTC


README

本包提供了Filepond的Laravel后端实现。

要求

此LaravelFilepond包需要PHP 7.2+和Laravel 5.8+。

安装

LaravelFilepond可以通过composer安装。

composer require dbt/laravel-filepond

此包将自动注册一个服务提供者。

您可以可选地发布配置文件。

php artisan vendor:publish --provider="Dbt\LaravelFilepond\LaravelFilepondServiceProvider" --tag="config"

这是配置文件的默认内容

<?php

return [

       /**
     * Disk on which to store temporary files
     */
    'disk_name' => env('FILEPOND_TEMP_DISK', 'local'),

    /**
     * Set a validation rules for temporary files
     * Example: ['file', 'mimes:png,jpg']
     */
    'temporary_file_rules' => ['required', 'file', 'max:12288'],

    /**
     * Name of field under file will be posted to server for process request
     */
    'field' => env('FILEPOND_FIELD', 'filepond'),

    /**
     * This suffix will be used for meta files
     */
    'meta_file_suffix' => '.metadata',

    /**
     * Middleware for filepond routes. It can be string or an array
     */
    'middleware' => 'web'
];

默认情况下,laravel filepond将临时文件存储在Laravel的本地磁盘上。如果您想使用专用磁盘,应向config/filesystems.php中添加磁盘。这是一个典型的配置

    // ...
    'disks' => [
        // ...
         'temp' => [
            'driver' => 'local',
            'root' => storage_path('temp'),
        ],
    // ...

别忘了忽略您配置的磁盘目录,以免文件最终出现在您的git仓库中。

基本用法

配置filepond

要从您的表单上传文件到由laravel filepond包提供的端点,您必须设置以下filepond配置

 FilePond.setOptions({
    server: {
        process: '/filepond/process',
        revert: '/filepond/revert',
        headers: {
            'Accept': 'application/json',
            'X-CSRF-TOKEN': csrf
        },
    }
})

一旦文件成功上传到服务器,filepond将文件的唯一ID存储在隐藏的输入字段中。

访问文件

您可以在控制器中像访问常规HTTP上传文件一样访问上传的文件。您只需使用Dbt\LaravelFilepond\Request而不是Illuminate\Http\Request

use Dbt\LaravelFilepond\Request;

public function __invoke(Request $request)
{
    $request->file('avatar')->store('avatars');
}

验证请求

当您将表单提交到服务器时,您可能想要验证您的表单请求。验证filepond上传的文件与验证HTTP上传文件完全相同。

use Dbt\LaravelFilepond\Request;

public function __invoke(Request $request)
{
    $request->validate([
        'avatar' => ['required', 'file', 'image', 'min:2', 'max:500']
    ]);

    $request->file('avatar')->store('avatars');
}

Laravel filepond检查请求中文件的唯一文件ID,并在验证期间用上传的文件替换字段。

等等。

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