codecamp

Laravel 8 自定义文件系统

Laravel 内置的文件系统提供了一些开箱即用的驱动;当然,它不仅仅是这些,它还提供了与其他存储系统的适配器。通过这些适配器,您可以在您的 Laravel 应用中创建自定义驱动。

要安装自定义文件系统,您可能需要一个文件系统适配器。让我们将社区维护的 Dropbox 适配器添加到项目中:

composer require spatie/flysystem-dropbox

接下来,您可以创建一个诸如 DropboxServiceProvider 这样的 服务提供者 。在提供者的 boot 方法中,您可以使用 Storage 门面的 extend 方法来定义一个自定义驱动:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Storage;
use Illuminate\Support\ServiceProvider;
use League\Flysystem\Filesystem;
use Spatie\Dropbox\Client as DropboxClient;
use Spatie\FlysystemDropbox\DropboxAdapter;

class DropboxServiceProvider extends ServiceProvider
{
    /**
     * 注册应用服务。
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * 驱动应用服务。
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend('dropbox', function ($app, $config) {
            $client = new DropboxClient(
                $config['authorization_token']
            );

            return new Filesystem(new DropboxAdapter($client));
        });
    }
} 

extend 方法的第一个参数是驱动的名称,第二个参数是一个闭包函数,这个闭包函数接收 $app$config 变量。解析器的闭包函数必须返回一个 League\Flysystem\Filesystem 的实例。$config 变量包含了指定磁盘在 config/filesystems.php 文件中定义的值。

接下来,在您的 config/app.php 配置文件中注册服务提供者:

'providers' => [
    // ...
    App\Providers\DropboxServiceProvider::class,
]; 

当您成功注册了一个扩展的服务提供者后,您便可以在您的 config/filesystems.php 配置文件中使用 dropbox 驱动。


Laravel 8 删除一个目录
Laravel 8 辅助函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Laravel 8 入门指南

Laravel 8 基础功能

Laravel 8 前端开发

Laravel 8 安全相关

Laravel 8 综合话题

数据库

Eloquent ORM

测试相关

官方拓展包

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }