modera / file-repository-bundle
Requires
- php: >=5.6
- doctrine/doctrine-bundle: ^1.6|^2.0
- doctrine/orm: ^2.5
- imagine/imagine: ^1.0
- knplabs/knp-gaufrette-bundle: ^0.5
- symfony/framework-bundle: ^3.4|^4.0
Requires (Dev)
- modera/foundation-bundle: ~3.1
- phake/phake: ^2.0
- phpunit/phpunit: ^5.5
- sergeil/aux-bundle: ^1.0
- dev-master / 4.x-dev
- 3.x-dev
- v3.1.0
- v3.0.0
- 2.x-dev
- v2.57.0
- v2.56.0
- v2.55.0
- v2.54.0
- v2.53.0
- v2.52.2
- v2.52.1
- v2.52.0
- v2.51.1
- v2.51.0
- v2.0.50
- dev-sf3
- dev-crub_pagination_fetch_fix
- dev-direct-bundle-csrf
- dev-MPFE-1014
- dev-MPFE-1014-2
- dev-MPFE-1017
- dev-MPFE-1029
- dev-MPFE-1005
- dev-MPFE-1007
- dev-MPFE-963
- dev-MPFE-975
- dev-MPFE-977
This package is auto-updated.
Last update: 2024-08-29 03:59:29 UTC
README
此包提供了一组高级API,用于将文件放入虚拟文件存储库,这些存储库内部使用Gaufrette文件系统抽象层。
安装
步骤1:下载包
composer require modera/file-repository-bundle:4.x-dev
此命令要求您全局安装Composer,如Composer文档中的安装章节中所述。
步骤2:启用包
此包应由Flex自动启用。如果您不使用Flex,您需要手动通过在项目的config/bundles.php
文件中添加以下行来启用包:
<?php // config/bundles.php return [ // ... Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true], // if you still don't have it Modera\FileRepositoryBundle\ModeraFileRepositoryBundle::class => ['all' => true], ];
最后,检查您的config/packages/validator.yaml
,并确保验证服务已启用。
framework: validation: ~
文档
当您需要以一致的方式存储文件,并能够在以后在领域模型或使用Doctrine ORM查询这些文件时,此包非常有用。配置过程包括两个步骤
- 配置Gaufrette文件系统适配器
- 创建虚拟存储库
以下是一个使用Gaufrette的示例文件系统配置,该配置将使用本地/path/to/my/filesystem
路径来存储文件
# config/packages/knp_gaufrette.yaml knp_gaufrette: adapters: local_fs: local: directory: /path/to/my/filesystem filesystems: local_fs: adapter: local_fs
一旦配置了低级文件系统,您就可以创建一个管理文件的存储库
<?php /* @var \Modera\FileRepositoryBundle\Repository\FileRepository $fr */ $fr = $container->get('modera_file_repository.repository.file_repository'); $repositoryConfig = array( 'filesystem' => 'local_fs' ); $fr->createRepository('my_repository', $repositoryConfig, 'My dummy repository'); $dummyFile = new \SplFileInfo('dummy-file.txt'); /* @var \Modera\FileRepositoryBundle\Entity\StoredFile $storedFile */ $storedFile = $fr->put('my_repository', $dummyFile);
当将物理文件放入存储库时,将在数据库中创建其描述符记录,以后您可以在领域逻辑中使用它。例如,如果您有一个表示物理文件的Doctrine实体,并且您想将一个用户与该用户的个人资料图片相关联,这将很有用。还值得一提的是,一旦删除了StoredFile实体,配置的文件系统中存储的物理文件也将自动删除。数据库中保存的此描述性记录包含许多有用的信息,如MIME类型、文件扩展名等,请参阅StoredFile实体的字段以获取更多详细信息。
存储库配置
当您创建存储库时,您可以使用以下配置属性来调整存储库的行为
- filesystem -- 此存储库应使用的Gaufrette文件系统名称来存储文件
- storage_key_generator -- 实现了
Modera\FileRepositoryBundle\Repository\StorageKeyGeneratorInterface
接口的类的DI服务ID。此类用于生成文件系统存储文件时使用的文件名。如果创建存储库时未提供此配置属性,则将使用Modera\FileRepositoryBundle\Repository\UniqidKeyGenerator
类。 - images_only -- 如果设置为TRUE,则只能将图像上传到存储库。
- max_size -- 如果指定了它,则无法上传大小超过给定值的文件。对于兆字节使用“m”前缀,对于千字节使用“k”,如果没有前缀,则使用字节,例如:100k,5m,800。
- file_constraint -- File约束的配置选项。
- image_constraint -- Image约束的配置选项。
- 拦截器 -- 允许指定要使用的附加拦截器,值必须是服务容器ID
命令行
该捆绑包提供命令,允许您在存储库和文件上执行一些标准操作
- modera:file-repository:create
- modera:file-repository:list
- modera:file-repository:delete-repository
- modera:file-repository:put-file
- modera:file-repository:list-files
- modera:file-repository:download-file
- modera:file-repository:delete-file
- modera:file-repository:generate-thumbnails
缩略图生成
该捆绑包包含一个拦截器,您可以使用它来自动为存储在存储库中的图像生成缩略图,要启用此功能,在创建新存储库时需要使用 modera_file_repository.interceptors.thumbnails_generator.interceptor 拦截器
<?php /* @var \Modera\FileRepositoryBundle\Repository\FileRepository $fr */ $fr = $container->get('modera_file_repository.repository.file_repository'); $repositoryConfig = array( 'filesystem' => 'local_fs', 'interceptors' => [ \Modera\FileRepositoryBundle\ThumbnailsGenerator\Interceptor::ID, ], 'thumbnail_sizes' => array( array( 'width' => 300, 'height' => 150 ), array( 'width' => 32, 'height' => 32 ) ) ); $fr->createRepository('vacation_pictures', $repositoryConfig, 'Pictures from vacation');
配置键 "thumbnail_sizes" 可用于指定所需的缩略图大小。使用此配置时,每当图片上传到存储库时,都会创建替代图片,有关更多详细信息,请参阅 StoredFile::$alternatives, StoredFile::$alternativeOf 属性。如果您已经有一个存储库并希望为其生成缩略图,则使用 modera:file-repository:generate-thumbnails
命令。
许可
此捆绑包受MIT许可协议保护。有关完整许可信息,请参阅捆绑包中的 Resources/meta/LICENSE 文件。