thomasvantuycom / flysystem-cloudinary
为 Flysystem 提供的 Cloudinary 文件系统适配器。
v1.0.4
2024-05-31 23:11 UTC
Requires
- php: ^8.0.2
- cloudinary/cloudinary_php: ^2.12
- league/flysystem: ^3.23
Requires (Dev)
- league/flysystem-adapter-test-utilities: ^3.21
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
README
这是一个 Flysystem 适配器,用于 Cloudinary。虽然不是第一个,但这个包努力成为最完整和可靠的 Cloudinary Flysystem 适配器。
安装
composer require thomasvantuycom/flysystem-cloudinary
使用方法
通过提供云名称、API 密钥和 API 密钥(可在 Cloudinary 控制台 获取)来配置 Cloudinary 客户端。然后,将客户端传递给适配器,并使用适配器初始化一个新的文件系统。
use Cloudinary\Cloudinary; use League\Flysystem\Filesystem; use ThomasVantuycom\FlysystemCloudinary\CloudinaryAdapter; $client = new Cloudinary([ 'cloud' => [ 'cloud_name' => 'CLOUD_NAME', 'api_key' => 'API_KEY', 'api_secret' => 'API_SECRET', ], 'url' => [ 'forceVersion' => false, ], ]); $adapter = new CloudinaryAdapter($client); $filesystem = new Filesystem($adapater);
在子文件夹中存储资源
默认情况下,文件系统的根文件夹对应于 Cloudinary 的根文件夹。如果您希望在 Cloudinary 的子文件夹中存储资源,可以向 Cloudinary 适配器提供第二个参数。
$adapter = new CloudinaryAdapter($client, 'path/to/folder');
自定义 MIME 类型检测
默认情况下,适配器使用 League\MimeTypeDetection\FinfoMimeTypeDetector 进行 MIME 类型检测并设置相应的资源类型。如果您想修改此行为,可以向 Cloudinary 适配器提供一个第三个参数,实现 League\MimeTypeDetection\MimeTypeDetector。
$adapter = new CloudinaryAdapter($client, '', $mimeTypeDetector);
启用动态文件夹模式。
默认情况下,适配器假设您的 Cloudinary 云使用固定文件夹模式。如果您想支持 动态文件夹,将第四个参数设置为 true。
$adapter = new CloudinaryAdapter($client, '', null, true);
限制
- 适配器严重依赖于 Cloudinary 管理员 API 来实现 Flysystem 的大部分操作。由于管理员 API 有速率限制,您可能会遇到超时。Cloudinary API 在区分图像、视频和其他资产方面存在挑战,这使得确保所有文件类型无缝运行的任务非常复杂且在 API 调用中成本高昂。需要强调的是,删除文件夹可能特别耗费资源。
- 适配器与 Cloudinary 的动态文件夹模式兼容。然而,它假设您的资产公共 ID 不包含路径。
测试
composer test
由于 Cloudinary 上传和删除响应的延迟,测试表现出一些不稳定性。
许可证
MIT 许可证。