Laavel에서 Dropbox 작업 수행

6393 단어 Laravel

개시하다


라벨의 저장 조작은 추상 파일 시스템Flysystem을 사용해 로컬 파일 시스템, 아마존 S3, 락스페이스 등 클라우드 저장소를 조작할 수 있는 드라이버를 제공한다.
이번에는 여기에 드롭박스를 조작하는 설정을 추가하려고 합니다.
(Laavel 5.1 및 5.5 작업 확인)

Dropbox 측 작업


응용 프로그램 만들기 시작


App Console에서 My Apps를 열고 Create app를 클릭합니다.

만들 응용 프로그램 설정


필요한 정보를 입력하여 프로그램을 만듭니다.
이번에는 Dropbox에 지정된 폴더만 조작하는 프로그램을 만들어 보았다.

accessToken 획득


프로그램이 완성되면 자동으로 설정 화면으로 이동합니다.
OAuth2란에 있는 "Generate"를 클릭하여 제작된accessToken을 복제하세요.

accessToken을 만들면 Dropbox의'적용'폴더에 해당하는 폴더가 자동으로 생성됩니다.
(메일, 모바일 애플리케이션을 확인하는 알림 등이 날아와 깜짝 놀랐다.)

Laavel 측 작업


. env 파일에서 얻은accessToken 설명


/.env
DROPBOX_ACCESS_TOKEN=hogehoge
잊지 마세요php artisan config:clear.

원하는 패키지 가져오기


이쪽의 문서에는 사용spatie/flysystem-dropbox에 대한 설명이 있지만 v1의 API를 사용한 것 같아서 지금은 사용할 수 없습니다.
v2에 대응하는 전단지를 사용합니다.
$ composer require srmklive/flysystem-dropbox-v2

ServiceProvider 작성

php artisan make:provider DropboxFilesystemServiceProvider

ServiceProvider 설치 내용


/app/Providers/DropboxFilesystemServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Storage;
use League\Flysystem\Filesystem;
use Srmklive\Dropbox\Client\DropboxClient;
use Srmklive\Dropbox\Adapter\DropboxAdapter;

class DropboxFilesystemServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend('dropbox', function ($app, $config) {
            return new Filesystem(new DropboxAdapter(new DropboxClient($config['accessToken'])));
        });
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Filesystem 설정 추가


/config/filesystems.php
'disks' => [
    // 以下を追記
    'dropbox' => [
        'driver' => 'dropbox',
        'accessToken' => env('DROPBOX_ACCESS_TOKEN'),
    ],
],

ServiceProvider 등록


/config/app.php
'providers' => [
    App\Providers\DropboxFilesystemServiceProvider::class,
],

동작 확인


만든 폴더에 알맞은 파일을 저장합니다.
// ファイル一覧の取得
$filepaths = \Storage::disk('dropbox')->allFiles('/');

foreach ($filepaths as $filepath) {
    \Log::debug($filepath);
}
로그에서 파일 목록을 출력하면 완료됩니다.

좋은 웹페이지 즐겨찾기