dereuromark / cakephp-file-storage
此插件允许您将文件存储在任何类型的存储后端。此插件将 Gaufrette 库(https://github.com/KnpLabs/Gaufrette)包装成 CakePHP 风格,并提供通过 StorageManager 类使用存储适配器的一种简单方法。
Requires
- php: >=8.1
- brick/varexporter: ^0.3.5 || ^0.4.0
- cakephp/cakephp: ^5.0.1
- php-collective/file-storage: dev-master as 1.0.0
Requires (Dev)
- php-collective/code-sniffer: ^0.2.1
- php-collective/file-storage-image-processor: dev-master as 1.0.0
- phpunit/phpunit: ^10.2
Suggests
- php-collective/file-storage-image-processor: Required if you want to use the image processing feature of FileStorage
This package is auto-updated.
Last update: 2024-09-16 21:18:26 UTC
README
FileStorage 插件为您提供将文件上传和存储到任何类型的存储后端的可能性。该插件以 CakePHP 风格引入了 FlySystem 库,并提供了一种简单的方法来使用存储适配器。
存储适配器是一个统一接口,允许您将文件数据存储到本地文件系统、内存、数据库、zip 文件或远程系统。有一个数据库表记录了您存储在哪里。您始终可以编写自己的适配器或扩展和重载现有的适配器。
此分支用于与 CakePHP 5.0+ 一起使用。有关详细信息,请参阅 版本映射。
工作原理
整个插件都考虑了清晰的 关注点分离 (SoC):从应用程序的角度看,文件始终是 file_storage
表中的一个条目。该表是文件的 参考 位置,并保留了一些元信息,如 MIME 类型、文件名、文件哈希(可选)和大小。将文件的路径存储在任意表中与其他数据一起被视为 不良做法,因为它不尊重从架构角度的 SoC,但许多人出于某种原因这样做。
您可以使用插件中的 FileStorage 模型通过 hasOne、hasMany 或 HABTM 将 file_storage
表与您的模型关联起来。上传文件时,您通过关联保存它到 FileStorage 模型,例如 Documents.file
。FileStorage 模型随后触发文件存储特定的事件,监听这些事件的监听器处理文件,并使用不同后端的适配器将其放入配置的存储后端,并使用路径构建器类构建存储路径。
文档
有关文档以及教程,请参阅此存储库的 docs 目录。
支持
有关错误和功能请求,请使用此存储库的 问题 部分。
贡献
要为此插件做出贡献,请遵循一些基本规则。
- 拉取请求必须发送到反映您想要贡献的版本的分支。
- 需要 单元测试。