atom-azimov/uploader-bundle

安装: 159

依赖: 0

建议者: 0

安全: 0

星星: 14

关注者: 5

分支: 4

类型:symfony-bundle

1.0.8 2017-03-18 02:03 UTC

This package is not auto-updated.

Last update: 2020-08-07 20:03:20 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,也可以与其它数据存储一起使用,甚至是简单的数组。

功能

  • 自动生成文件名并保存文件;
  • 当文件从数据存储中加载时,将其作为对象嵌入到对象中;
  • 当文件从数据存储中加载时,将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