burzum / cakephp-file-storage
此插件让您能够在任何类型的存储后端中存储文件。此插件以 CakePHP 风格封装了 Gaufrette 库(https://github.com/KnpLabs/Gaufrette)并提供了一个通过 StorageManager 类使用存储适配器的方法。
Requires
- php: >=7.2.0
- cakephp/cakephp: 4.x-dev as 4.0.0
- cakephp/plugin-installer: ^1.0.0
- knplabs/gaufrette: ^0.7.0|^0.8.0
Requires (Dev)
- aws/aws-sdk-php: *
- burzum/cakephp-imagine-plugin: 4.x-dev
- cakephp/cakephp-codesniffer: dev-next
- league/flysystem: ^1.0.0
- phpunit/phpunit: ^8.0
- vlucas/phpdotenv: ^3.3
Suggests
- burzum/cakephp-imagine-plugin: Required if you want to use the image processing feature of FileStorage
- league/flysystem: Alternative for Gaufrette, see the docs how to configure it.
- 4.0.x-dev
- 3.0.x-dev
- 3.0.0-beta
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 2.0.0-rc1
- 2.0.0-beta2
- 2.0.0-beta1
- 2.0.0-alpha1
- 1.2.x-dev
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.1.0-rc1
- 1.1.0-beta1
- 1.1.0-alpha1
- 1.0.x-dev
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 1.0.0-RC1
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- dev-4.0-fixes
- dev-0.0-cake2
- dev-master
This package is auto-updated.
Last update: 2022-03-25 02:57:18 UTC
README
如果您是从 CakePHP 2.x 升级,请阅读迁移指南。
文件存储插件让您能够在任何类型的存储后端中上传和存储文件。该插件提供了 CakePHP 风格的 Gaufrette 和 FlySystem 库,并通过 StorageManager 类提供了一个简单的方式来使用存储适配器。
存储适配器是一个统一的接口,允许您将文件数据存储到本地文件系统、内存、数据库或 zip 文件中,以及远程系统。有一个数据库表跟踪您存储了什么。您始终可以编写自己的适配器或扩展现有的适配器。
工作原理
整个插件都考虑了清晰的 关注点分离(SoC):从应用程序的角度看,文件始终是 file_storage
表中的一个条目。该表是文件实际存储位置的引用,并保留一些元信息,如 mime 类型、文件名、文件哈希(可选)和大小。将文件的路径存储在任意表内,与其他数据一起,被视为 不良实践,因为它不尊重从架构角度的关注点分离,但许多人出于某种原因这样做。
您可以使用插件中的 FileStorage 或 ImageStorage 模型通过 hasOne、hasMany 或 HABTM 将 file_storage
表与您的模型关联起来。当您上传文件时,您可以通过关联将其保存到 FileStorage 模型中,例如 Documents.file
。FileStorage 模型随后会分发特定于文件存储的事件,监听这些事件的监听器处理文件并将其放入配置的存储后端,使用不同后端的适配器,并使用路径生成类构建存储路径。
支持的适配器列表
- Apc
- Amazon S3
- ACL Aware Amazon S3
- Azure
- Doctrine DBAL
- Dropbox
- Ftp
- Grid FS
- 内存
- 本地文件系统
- MogileFS
- Open Cloud
- Rackspace Cloudfiles
- Sftp
- Zip 文件
支持的 CakePHP 版本
- CakePHP 4.x -> 3.0 分支
- CakePHP 3.x -> 2.0 分支
- CakePHP 2.x -> 1.0 分支
需求
- PHP 7.2+
- CakePHP 4.x
- Gaufrette 存储库 0.7.x
可选,但如果您希望开箱即用地进行图像处理,则必须使用
- 如果您想要处理和存储图像,可以使用Imagine 图像处理插件。
- 作为 Gaufrette 的替代库,使用FlySystem。
您仍然可以非常容易地实现任何想要的文件处理。它与 Imagine 无关。
文档
有关文档和教程,请参阅此存储库的docs目录。
支持
有关错误和功能请求,请使用此存储库的问题部分。
贡献
要为此插件做出贡献,请遵循以下一些基本规则。
- 拉取请求必须发送到反映您想要贡献的版本的分支。
- 需要单元测试。
许可证
版权所有:Florian Krämer
根据 MIT 许可证授权。文件的再分发必须保留上述版权声明。