【问题标题】:Laravel Storage::extend not workingLaravel Storage::extend 不工作
【发布时间】:2017-05-22 04:21:22
【问题描述】:

我无法弄清楚我要去哪里错了,这个。我遵循 Laravel 文档,通过 composer 安装 spatie/flysystem-dropbox 复制了 Laravel 文档中的 DropboxServiceProvider,将提供的服务添加到 config\app.php,运行 composer dump autoload,但我仍然收到以下错误消息:

PHP error:  Undefined index: driver in /***/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php on line 112

这里是服务提供者:

<?php

namespace App\Providers;

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

class DropboxServiceProvider extends ServiceProvider
{
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend('dropbox', function ($app, $config) {
            $client = new DropboxClient(
                $config['authorizationToken']
            );

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

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

这是我的配置/应用程序/php:

...
        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        App\Providers\DropboxServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

...

最后,这是我的 config/filesystems.php:

'dropbox'=>[
            'authorizationToken'=>env('DROPBOX_ACCESS_TOKEN')
        ],

【问题讨论】:

    标签: php laravel dropbox service-provider laravel-storage


    【解决方案1】:

    原来我错过了config/filesystems/php 中的驱动程序值,所以应该是这样的:

    'dropbox'=>[
                'driver' => 'dropbox',  <=== THIS WAS MISSING
                'authorizationToken'=>env('DROPBOX_TOKEN')
            ],
    

    【讨论】:

      【解决方案2】:

      一个很好的 Pacakge 可用于使用 Dropbox 扩展存储: 详细文档:https://github.com/GrahamCampbell/Laravel-Dropbox

      steps for use this package :
      1 : composer require graham-campbell/dropbox in your cmd window
      2 : after this you have to register service provider for laravel dropbox,
          go to config/app.php
          and add 'GrahamCampbell\Dropbox\DropboxServiceProvider' this in provider array
          and 'Dropbox' => 'GrahamCampbell\Dropbox\Facades\Dropbox' this to aliases array
      3: now you have to publish pacakge so 'php artisan vendor:publish' run this in your cmd
          - this will create dropbox.php file in your config in this file you have to add your credentials
      4: here you have two option for connection you can use it according to your choice.
      
      usage : 
      simple example : 
      use GrahamCampbell\Dropbox\Facades\Dropbox;
      // you can alias this in config/app.php if you like
      
      Dropbox::createFolder('Folder_Name');
      // we're done here - how easy was that, it just works!
      
      Dropbox::delete('Folder_Name');
      // this example is simple, and there are far more methods available  
      

      【讨论】:

        猜你喜欢
        • 2022-01-13
        • 2021-11-10
        • 2019-10-30
        • 1970-01-01
        • 2020-03-14
        • 2019-04-24
        • 2012-12-04
        • 2021-09-16
        • 1970-01-01
        相关资源
        最近更新 更多