thomasvantuycom/flysystem-cloudinary

为 Flysystem 提供的 Cloudinary 文件系统适配器。

v1.0.4 2024-05-31 23:11 UTC

This package is auto-updated.

Last update: 2024-08-31 00:33:35 UTC


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 许可证。