atom-php / uploader-bundle
此包已被废弃且不再维护。作者建议使用 atom-php/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,也可以与其它数据存储(甚至简单的数组)一起使用。
功能
- 自动生成文件名并保存文件;
- 在文件从数据存储中加载时,将其作为
\SplFileInfo
实例重新嵌入到对象中; - 在文件从数据存储中加载时,将其 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