atom-azimov / uploader-bundle
1.0.8
2017-03-18 02:03 UTC
Requires
- php: >=5.5.9
- atom-php/uploader: ~1.5
Requires (Dev)
- behat/behat: ~3.3
- doctrine/doctrine-bundle: ~1.6
- doctrine/doctrine-cache-bundle: ~1.3
- doctrine/orm: ~2.5
- oneup/flysystem-bundle: ~1.8
- phpunit/phpunit: ~5.7
- sensio/distribution-bundle: ~5.0
- sensio/framework-extra-bundle: ~3.0
- symfony/monolog-bundle: ~3.0
- symfony/swiftmailer-bundle: ~2.4
- symfony/symfony: ~3.2
- twistor/flysystem-stream-wrapper: ~1.0
Suggests
- doctrine/doctrine-bundle: You can use doctrine as a persistence layer for your business objects.
- oneup/flysystem-bundle: You can use flysystem as a filesystem adapter instead the local filesystem adapter.
- twistor/flysystem-stream-wrapper: Use it if you use flysystem and want mount a filesystem at a file info resolution.
README
一个提供上传文件保存功能的Symfony包。
动机
该项目旨在简化文件上传,通过使用Doctrine嵌入式对象。但该项目不依赖于Doctrine,也可以与其它数据存储一起使用,甚至是简单的数组。
功能
- 自动生成文件名并保存文件;
- 当文件从数据存储中加载时,将其作为
对象嵌入到对象中; - 当文件从数据存储中加载时,将URI嵌入到对象中;
- 当从数据存储中删除(或更新)对象时,从文件系统中删除文件。
所有功能均可配置。
在DIC优化阶段删除未使用的服务,仅在需要时初始化使用的服务。
快速入门
安装
composer require atom-php/uploader-bundle
启用
# app/AppKernel.php public function registerBundles() { $bundles = [ ... new Atom\UploaderBundle\AtomUploaderBundle(), ... ]; }
使用
AtomUploaderBundle是一个预制的嵌入式对象,用于快速开发。
只需将其嵌入到实体中
# src/Entity/User.php namespace Acme\Entity; use Doctrine\ORM\Mapping\Embedded; class User { ... /** * @Embedded(class="Atom\Uploader\Model\Embeddable\FileReference") */ private $avatar; }
完成!现在附加的文件将自动保存在文件系统中,默认在"%kernel.root_dir%/../web/uploads"。
示例
保存上传的文件
$file = // экземпляр \SplFileInfo $em = // entity manager $avatar = new Atom\Uploader\Model\Embeddable\FileReference($file); $user = new Acme\Entity\User(); $user->setAvatar($avatar); // Генерируется имя файла и сохраняется в файловой системы. $em->persist($user); // Если все хорошо то ничего не делается, иначе файл удаляется. $em->flush();
更新
$file = // экземпляр \SplFileInfo $user = // экземпляр Acme\Entity\User $avatar = new Atom\Uploader\Model\Embeddable\FileReference($file); $user->setAvatar($avatar); // Генерируется имя файла и сохраняется в файловой системы. // Удаляется старый файл если имя файла не совпадает с новым. $em->flush();
获取
// внедряется URI и информация о файле. $user = $em->find('Acme\Entity\User', 1);
默认情况下,不嵌入文件信息(\SplFileInfo),可以在config.yml中启用。
atom_uploader: mappings: Atom\Uploader\Model\Embeddable\FileReference: inject_file_info_on_load: true
删除
$user = // экземпляр Acme\Entity\User $em->setAvatar(null); // или $em->remove($user); // Файл удаляется. $em->flush();
文档
请参阅src/Resources/doc/ru/index.md