W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Laravel 內(nèi)置的文件系統(tǒng)提供了一些開(kāi)箱即用的驅(qū)動(dòng);當(dāng)然,它不僅僅是這些,它還提供了與其他存儲(chǔ)系統(tǒng)的適配器。通過(guò)這些適配器,您可以在您的 Laravel 應(yīng)用中創(chuàng)建自定義驅(qū)動(dòng)。
要安裝自定義文件系統(tǒng),您可能需要一個(gè)文件系統(tǒng)適配器。讓我們將社區(qū)維護(hù)的 Dropbox 適配器添加到項(xiàng)目中:
composer require spatie/flysystem-dropbox
接下來(lái),您可以創(chuàng)建一個(gè)諸如 DropboxServiceProvider
這樣的 服務(wù)提供者 。在提供者的 boot
方法中,您可以使用 Storage
門面的 extend
方法來(lái)定義一個(gè)自定義驅(qū)動(dòng):
<?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
{
/**
* 注冊(cè)應(yīng)用服務(wù)。
*
* @return void
*/
public function register()
{
//
}
/**
* 驅(qū)動(dòng)應(yīng)用服務(wù)。
*
* @return void
*/
public function boot()
{
Storage::extend('dropbox', function ($app, $config) {
$client = new DropboxClient(
$config['authorization_token']
);
return new Filesystem(new DropboxAdapter($client));
});
}
}
extend
方法的第一個(gè)參數(shù)是驅(qū)動(dòng)的名稱,第二個(gè)參數(shù)是一個(gè)閉包函數(shù),這個(gè)閉包函數(shù)接收 $app
和 $config
變量。解析器的閉包函數(shù)必須返回一個(gè) League\Flysystem\Filesystem
的實(shí)例。$config
變量包含了指定磁盤在 config/filesystems.php
文件中定義的值。
接下來(lái),在您的 config/app.php
配置文件中注冊(cè)服務(wù)提供者:
'providers' => [
// ...
App\Providers\DropboxServiceProvider::class,
];
當(dāng)您成功注冊(cè)了一個(gè)擴(kuò)展的服務(wù)提供者后,您便可以在您的 config/filesystems.php
配置文件中使用 dropbox
驅(qū)動(dòng)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: