smadia/laravel-google-drive-connector

用于Laravel的Google Drive API连接器

0.0.2 2017-10-29 13:55 UTC

This package is not auto-updated.

Last update: 2024-09-20 02:13:31 UTC


README

0.0.2

安装

确保您已经安装了laravel >= 5.2.*

然后,使用composer安装包

composer require "smadia/laravel-google-drive-connector:0.0.*"

config/app.php中注册外观

'aliases' => [
    .....
    'LGD' => Smadia\LaravelGoogleDrive\Facades\LaravelGoogleDrive::class
    .....
]

config/app.php中注册服务提供者

'providers' => [
    .....
    Smadia\LaravelGoogleDrive\Providers\LaravelGoogleDriveServiceProvider::class
    .....
]

您可以手动创建自己的外观和服务提供者,然后进行注册。

配置

在使用包之前,确保您已经在config/filesystem.php中添加了新的磁盘

'disks' => [

    // ...

    'googledrive' => [
        'driver' => 'googledrive',
        'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
        'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
        'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
        'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'),
    ],

    // ...

],

然后,您应该在.env文件中添加新的字段

FILESYSTEM_CLOUD=googledrive
GOOGLE_DRIVE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=xxx
GOOGLE_DRIVE_REFRESH_TOKEN=xxx
GOOGLE_DRIVE_FOLDER_ID=null

如何获取Google Drive API?请遵循以下链接

用法

非对象文件中的用法

您可以在非对象文件中使用LGD外观,例如routes/web.php、blade文件。以下是非对象文件中的示例用法

LGD::dir('mydir')->ls()->toObject();

如果您在对象上下文中使用外观,则应在以下namespace声明之后使用Smadia\LaravelGoogleDrive\Facades\LaravelGoogleDrive

<?php

namespace App\User;

// other use declaration
use Smadia\LaravelGoogleDrive\Facades\LaravelGoogleDrive;
// other use declaration

之后,您可以使用LaravelGoogleDrive外观代替LGD如下所示

LaravelGoogleDrive::ls()->toArray()

如果您只想使用LGD关键字,则可以在use声明中使用as,如下所示

<?php

namespace App\User;

// other use declaration
use Smadia\LaravelGoogleDrive\Facades\LaravelGoogleDrive as LGD;
// other use declaration

从您的根目录获取内容列表

LGD::ls()->toArray()

获取特定的目录

LGD::dir('mydir')->ls()->toArray()

如果您有两个或更多同名项,则获取特定的索引

索引从0(零)开始

LGD::dir('mydir, 2)->ls()->toArray()

在特定目录中获取特定文件

LGD::dir('mydir')->file('youfile', 'txt')->name

您可以通过添加索引来获取文件(如果您有两个或更多同名文件)

LGD::dir('mydir')->file('yourfile', 'txt', 2)->name

获取其他文件的属性

以下是从file()方法添加->(property)后可以获取的文件属性列表

  • name
  • extension
  • path
  • dirname
  • basename
  • size
  • timestamp
  • mimetype(仅适用于文件类型)
  • type

筛选

要筛选目录的内容列表,可以使用filter()方法

    LGD::ls(function($ls) {
        return $ls->where('type', '=', 'dir'); // another option of 'type' is 'file'
    })->toArray();

文件存储

以下是将文件存储在Google Drive中的示例

LGD::put('hello.txt', 'Hello World !');

如果您想在控制器中存储上传的文件,可以使用这个

LGD::put('hello.txt', file_get_contents($request->file('file')->getRealPath()));

如果您想文件名与原始上传文件相同,可以将$request->file()作为参数分配

LGD::put($request->file('file'));

目录方法

以下是对您的目录的扩展方法

文件方法

内容列表方法