I’m having trouble with Google Drive integration after upgrading my Laravel project. The masbug/flysystem-google-drive-ext package that worked fine in older Laravel versions seems to have compatibility issues now.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Controller;
use Illuminate\Support\Facades\Storage;
use Masbug\Flysystem\GoogleDrive\GoogleDriveAdapter;
use Masbug\Flysystem\GoogleDrive\GoogleDriveServiceProvider;
class DriveManagerController extends Controller
{
private $googleClient;
private $targetFolderId;
private $driveService;
private $filesystemAdapter;
private $provider;
private $appClientId = '###';
private $appClientSecret = '###';
private $userRefreshToken = '###';
public function __construct()
{
$this->googleClient = new \Google_Client();
$this->googleClient->setClientId($this->appClientId);
$this->googleClient->setClientSecret($this->appClientSecret);
$this->googleClient->refreshToken($this->userRefreshToken);
$this->driveService = new \Google_Service_Drive($this->googleClient);
$this->targetFolderId = '1AbC2dEf3GhI4jKl5MnO6pQr7StU8vWx9';
$this->filesystemAdapter = new GoogleDriveAdapter([
'clientId' => $this->appClientId,
'clientSecret' => $this->appClientSecret,
'refreshToken' => $this->userRefreshToken,
'service' => $this->driveService,
]);
$this->provider = new GoogleDriveServiceProvider($this->filesystemAdapter);
}
public function makeNewFolder($dirName, $parentId)
{
$metadata = [
'name' => $dirName,
'parents' => [$parentId],
'mimeType' => 'application/vnd.google-apps.folder',
];
$newFolder = $this->provider->createDirectory($dirName, $parentId);
return $newFolder['id'];
}
public function folderExists($dirName, $parentId)
{
$contents = $this->provider->listContents('/', true);
foreach ($contents as $item) {
if ($item['type'] == 'dir' && $item['basename'] == $dirName) {
return true;
}
}
return false;
}
public function storeFile($folderId, $fileContent, $fileName)
{
$uploadResult = $this->provider->write($folderId+'/'+$fileName, $fileContent);
return $uploadResult;
}
}
The code worked perfectly when I was using Laravel 6, but after upgrading to Laravel 10 and now trying Laravel 11, it’s not functioning properly. Can anyone suggest a better approach or alternative package for Google Drive integration that’s compatible with newer Laravel versions?