faparicior/far-symfony2-jquery-upload

使用 OneUpFlySystem 集成 JqueryUpload 到 Symfony2

安装: 48

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 2

分支: 7

开放问题: 1

类型:symfony-bundle

1.0.1 2016-02-01 11:24 UTC

This package is not auto-updated.

Last update: 2024-09-18 18:50:54 UTC


README

此包通过使用 1up-lab/OneUpFlySystemBundle 文件系统抽象层,将 BlueImp/Jquery Upload Plugin 集成到 symfony2 中。

项目 faparicior/FARSymfony2UploadDemo 是用于测试此包的示例。

安装

步骤 1: 下载包

打开命令行,进入项目目录并执行以下命令以下载此包的最新稳定版本

$ composer require faparicior/far-symfony2-jquery-upload "~1"

此命令需要您已全局安装 Composer,如 Composer 文档的 安装章节 中所述。

步骤 2: 启用包

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的包列表中来启用包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new faparicior\FARSymfony2UploadBundle\FARSymfony2UploadBundle(),
        );

        // ...
    }

    // ...
}

步骤 3: 配置包

  1. app/config/routing.yml 中添加以下行
far_symfony2_upload:
    resource: "@FARSymfony2UploadBundle/Controller/"
    type:     annotation
    prefix:   "/farupload"
  1. app/config/config.yml 中添加包所需的配置
far_symfony2_upload:
    prefix: "farupload"
    temp_path: "%kernel.root_dir%/../web/tmp"
    thumbnail_directory_prefix: "thumbnails"
    thumbnail_driver: "gd"
    thumbnail_size: "80x80"
    max_file_size: 100000
    max_files_upload: 2
    file_extensions_allowed: ["jpg", "png", "gif"]
    local_filesystem: "local_filesystem"
    remote_filesystem: "remote_filesystem"
  1. 启用 1up-lab/OneUpFlySystemBundle

  2. app/config/config.yml 中添加 OneUpFlySystem 包所需的配置

oneup_flysystem:
    adapters:
        local_adapter:
            local:
                directory: %kernel.root_dir%/../web/tmp
                writeFlags: ~
                linkHandling: ~
        remote_adapter:
            local:
                directory: %kernel.root_dir%/../web/images
                writeFlags: ~
                linkHandling: ~
    filesystems:
        my_filesystem:
            adapter: local_adapter
            mount: local_filesystem
        remote_filesystem:
            adapter: remote_adapter
            mount: remote_filesystem
  1. 您可以在开发中看到新添加的路由。
$ php app/console debug:router

farsymfony2upload_default_upload POST        ANY    ANY  /farupload/upload/{id_session}
farsymfony2upload_default_delete POST|DELETE ANY    ANY  /farupload/tmp/{php_session}/{id_session}/{image}_{action}

使用方法

在上传 JavaScript 动作中

您的 JavaScript 开发需要一个 UID 来标识上传。此包使用 php_session 和 UID 生成临时目录结构。

在保存 symfony2 动作中

这是 symfony2 保存动作的示例。

使用存储 id_session 变量的 php_session 和 UID,您可以获取参与上传的文件。

《getListFilesLocal》函数返回一个如下的文件数组

{
    "files": [
        {
            "type": "file",
            "timestamp": 1451316072,
            "size": 66664,
            "pathOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "dirnameOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123",
            "basenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionOrig": "jpeg",
            "filenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
            "pathDest": "d0i8nvm9p9h3v9k08vn8jl1qs7/123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg"
            "dirnameDest": "d0i8nvm9p9h3v9k08vn8jl1qs7/123"
            "basenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionDest": "jpeg",
            "filenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
        }
    ]
}

《setListFilesPathRemote》函数返回一个文件数组,该数组建立了源和目的地的文件系统

{
    "files": [
        {
            "type": "file",
            "timestamp": 1451316072,
            "size": 66664,
            "pathOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "dirnameOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123",
            "basenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionOrig": "jpeg",
            "filenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
            "pathDest": "123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "dirnameDest": "123",
            "basenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionDest": "jpeg",
            "filenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
        }
    ]
}

《syncFilesLocalRemote》从临时存储复制文件到最终存储。此函数返回一个包含结果的数组。包含以下属性,
通知复制的或重写的文件。

{
    "files": [
        {
            "type": "file",
            "timestamp": 1451316072,
            "size": 66664,
            "pathOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "dirnameOrig": "d0i8nvm9p9h3v9k08vn8jl1qs7/123",
            "basenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionOrig": "jpeg",
            "filenameOrig": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
            "pathDest": "123/60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "dirnameDest": "123",
            "basenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original.jpeg",
            "extensionDest": "jpeg",
            "filenameDest": "60aca821-0104-405c-8a3f-a1ac8a0041ff-original",
            "saved": true,
            "duplicated": true
        }
    ]
}

《deleteFilesLocal》清除临时文件。并返回与《syncFilesLocalRemote》相同的数组。

您可以在发送到调用《syncFilesLocalRemote》以保存到其他目的地之前,修改数组中的 pathDestdirnameDestbasenameDestextensionDestfilenameDest 元素。

/**
 * @Route("/save/{id_session}")
 * @Method("POST")
 *
 * @param string $id_session
 *
 * @return JsonResponse
 */
public function saveAction($id_session)
{
    $php_session = $this->get('session')->getId();
    $FARUpload = $this->get('far_symfony2_upload_bundle.far_symfony2_upload_lib.service');

    $files = $FARUpload->getListFilesLocal($php_session, $id_session);
    $files = $FARUpload->setListFilesPathRemote($files, $id_session);

    $files = $FARUpload->syncFilesLocalRemote($files, true);
    $files = $FARUpload->deleteFilesLocal($files);

    return new JsonResponse(array('files' => $files));
}