nao-pon/flysystem-google-drive
Laravel Flysystem adapter for Google Drive. Store, read, list, update and delete files on Drive using Flysystem’s filesystem API, with support for service accounts or OAuth. Ideal for using Google Drive as a cloud disk in Laravel apps.
composer require nao-pon/flysystem-google-drive:~1.1
composer require nao-pon/flysystem-google-drive:~1.0.0
ClientId, ClientSecret & refreshToken in addition you can also check this easy-to-follow tutorial$client = new \Google_Client();
$client->setClientId('[app client id].apps.googleusercontent.com');
$client->setClientSecret('[app client secret]');
$client->refreshToken('[your refresh token]');
$service = new \Google_Service_Drive($client);
$adapter = new \Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter($service, '['root' or folder ID]');
/* Recommended cached adapter use */
// $adapter = new \League\Flysystem\Cached\CachedAdapter(
// new \Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter($service, '['root' or folder ID]'),
// new \League\Flysystem\Cached\Storage\Memory()
// );
$filesystem = new \League\Flysystem\Filesystem($adapter);
composer require nao-pon/elfinder-flysystem-driver-ext
composer require nao-pon/flysystem-google-drive:~1.1
// Load composer autoloader
require 'vender/autoload.php';
// Google API Client
$client = new \Google_Client();
$client->setClientId('xxxxx CLIENTID xxxxx');
$client->setClientSecret('xxxxx CLIENTSECRET xxxxx');
$client->refreshToken('xxxxx REFRESH TOKEN xxxxx');
// Google Drive Adapter
$googleDrive = new \Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter(
new \Google_Service_Drive($client), // Client service
'root', // Folder ID as root ('root' or Folder ID)
[ 'useHasDir' => true ] // options (elFinder need hasDir method)
);
// Extended cached strage adapter class for cache enabled of hasDir() method
class myCachedStrageAdapter extends \League\Flysystem\Cached\Storage\Adapter
{
use \Hypweb\Flysystem\Cached\Extra\Hasdir;
use \Hypweb\Flysystem\Cached\Extra\DisableEnsureParentDirectories;
}
// Make Flysystem adapter and cache object
$useCache = true;
if ($useCache) {
// Example to Flysystem cacheing
$cache = new myCachedStrageAdapter(
new \League\Flysystem\Adapter\Local('flycache'),
'gdcache',
300
);
// Flysystem cached adapter
$adapter = new \League\Flysystem\Cached\CachedAdapter(
$googleDrive,
$cache
);
} else {
// Not use cached adapter
$cache = null;
$adapter = $googleDrive;
}
// Google Drive elFinder Volume driver
$gdrive = [
// require
'driver' => 'FlysystemExt',
'filesystem' => new \League\Flysystem\Filesystem($adapter),
'fscache' => $cache,
'separator' => '/',
// optional
'alias' => 'GoogleDrive',
'rootCssClass' => 'elfinder-navbar-root-googledrive'
];
// elFinder volume roots options
$elFinderOpts = [
'roots' => []
];
$elFinderOpts['roots'][] = $gdrive;
// run elFinder
$connector = new elFinderConnector(new elFinder($elFinderOpts));
$connector->run();
How can I help you explore Laravel packages today?