atom-php/uploader-bundle

此包已被废弃且不再维护。作者建议使用 atom-php/uploader-bundle 包。

安装: 1,693

依赖者: 0

建议者: 0

安全: 0

星标: 14

关注者: 5

分支: 4

开放问题: 5

类型:symfony-bundle

1.0.8 2017-03-18 02:03 UTC

This package is not auto-updated.

Last update: 2020-06-10 11:11:05 UTC


README

Symfony 包,用于保存上传的文件。

Build Status Gitter Slack Status Dependency Status Code Climate

GitHub license Latest Stable Version Latest Unstable Version Total Downloads SensioLabsInsight

动机

该项目旨在通过使用 Doctrine 嵌入式对象来简化文件上传。但它不依赖于 doctrine,也可以与其它数据存储(甚至简单的数组)一起使用。

功能

  • 自动生成文件名并保存文件;
  • 在文件从数据存储中加载时,将其作为 \SplFileInfo 实例重新嵌入到对象中;
  • 在文件从数据存储中加载时,将其 URI 嵌入到对象中;
  • 在从数据存储中删除(或更新)对象时,从文件系统中删除文件。

所有功能均可自定义。

未使用的服务在 DIC 优化阶段被删除,而使用的服务仅在需要时才初始化。

快速开始

快速开始适合 RAD 开发。为了更灵活地使用,请参阅 文档

安装

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

贡献自己的力量以促进项目发展

参见 contributing_ru.md