Flysystem:PHP 项目的文件存储抽象层
·
Flysystem:PHP 项目的文件存储抽象层
Flysystem 是一个 PHP 文件存储库,获得了 13,569 个 Star:


Flysystem 提供统一的接口来操作不同类型的文件系统。本地存储、FTP、S3、Google Cloud Storage,无论底层是什么,调用方式保持一致。
这种设计的好处很直接:项目上线后要换存储供应商,改一行配置就行,业务代码不用动。
官方适配器
Flysystem 内置了 10 个官方适配器:
- Local(本地文件系统)
- FTP / SFTP
- AWS S3 / AsyncAws S3
- Google Cloud Storage
- MongoDB GridFS
- WebDAV
- ZipArchive
- Memory(内存存储,适合测试场景)
第三方适配器
社区维护了大量第三方适配器,覆盖 Azure Blob Storage、Dropbox、Google Drive、OneDrive、Gitlab、BunnyCDN 等平台。现有适配器都不满足需求的话,也可以自己写一个,Flysystem 提供了适配器开发文档。
安装
通过 Composer 安装:
composer require league/flysystem
基本用法
use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter;
$adapter = new LocalFilesystemAdapter('/path/to/root');
$filesystem = new Filesystem($adapter);
// 写入文件
$filesystem->write('file.txt', '内容');
// 读取文件
$content = $filesystem->read('file.txt');
// 检查文件是否存在
$exists = $filesystem->fileExists('file.txt');
切换到 S3 只需替换 Adapter:
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
$adapter = new AwsS3V3Adapter($s3Client, 'bucket-name');
$filesystem = new Filesystem($adapter);
上面的读写代码不需要任何改动。
V3 版本更新
Flysystem 当前主版本为 V3,主要变化包括底层架构全面重写、适配器异步化、以及更清晰的 API 设计。从 1.x 或 2.x 升级可以参考官方迁移文档。
项目使用 MIT 协议,作者 Frank de Jonge 从 2013 年开始维护至今。
1.x 或 2.x 升级可以参考官方迁移文档。
项目使用 MIT 协议,作者 Frank de Jonge 从 2013 年开始维护至今。
更多推荐

所有评论(0)