Cloudinary adapter for The PHP League Flysystem v3
composer require carlosocarvalho/flysystem-cloudinary
You can configure the package in two different ways.
You can configure the library using the environment variable CLOUDINARY_URL
. Whe using CLOUDINARY_URL
you have access to the underlying Cloudinary SDK without instantiating the adapter or explicit instantiating the Cloudinary SDK.
You can read more in their documentation https://cloudinary.com/documentation/php_integration#setting_the_cloudinary_url_environment_variable
use CarlosOCarvalho\Flysystem\Cloudinary\CloudinaryAdapter;
use League\Flysystem\Filesystem;
$adapter = new CloudinaryAdapter();
$filesystem = new Filesystem( $adapter );
use CarlosOCarvalho\Flysystem\Cloudinary\CloudinaryAdapter;
use League\Flysystem\Filesystem;
$config = [
'api_key' => ':key',
'api_secret' => ':secret',
'cloud_name' => ':name',
];
$adapter = new CloudinaryAdapter($config);
$filesystem = new Filesystem( $adapter );
#Options use file type resource
$filesystem->listContents()
CloudinaryAdapter::$resourceType = \Cloudinary\Asset\AssetType::IMAGE;
$filesystem->listContents()
To use in Laravel register you must register the driver. Learn how to register a custom filesystem in the Laravel Documentation.
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
use League\Flysystem\Filesystem;
use CarlosOCarvalho\Flysystem\Cloudinary\CloudinaryAdapter;
...
Storage::extend('cloudinary', function ($app, $config) {
if(!empty(env('CLOUDINARY_URL'))){
$adapter = new CloudinaryAdapter();
}else{
$adapter = new CloudinaryAdapter($config);
}
return new FilesystemAdapter(
new Filesystem($adapter, $config),
$adapter,
$config
);
});