簡體   English   中英

自定義名稱和自定義目錄-OneupUploaderBundle

[英]Custom name & custom directory - OneupUploaderBundle

我正在將OneupUploaderBundle與jQuery File Upload一起用於在SF2應用程序中上傳照片。

通過在這里閱讀文檔: https : //github.com/1up-lab/OneupUploaderBundle簡單的上傳正在工作,我上傳的每張照片都存儲在/ web / uploads / gallery文件夾下,具有唯一的生成名稱(我猜是uniqid()) )

我想要做的是:根據用戶在表單中選擇的內容更改文件夾和/或文件名(選擇來自選擇下拉列表)。

這需要:

但要點是,我不知道如何在我的命名器中選擇哪個用戶或更改上載目錄,請您能幫我嗎?

謝謝

前端JS:

<script type="text/javascript">
$(function () {
    'use strict';
    // Change this to the location of your server-side upload handler:
    var url = '{{ oneup_uploader_endpoint('gallery') }}';
    $('#fileupload').fileupload({
        url: url,
        dataType: 'html',
        done: function (e, data) {
            console.log(data);
            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo('#files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .progress-bar').css(
                'width',
                progress + '%'
            );
        }
    }).prop('disabled', !$.support.fileInput)
        .parent().addClass($.support.fileInput ? undefined : 'disabled');
});

聽眾

namespace Acme\PhotoBundle\EventListener;

use Oneup\UploaderBundle\Event\PostPersistEvent;
use Acme\PhotoBundle\Entity\Photo;
use Symfony\Component\HttpFoundation\Response;

class UploadListener
{
protected $manager;

public function __construct($doctrine)
{
    $this->manager = $doctrine;
}

public function onUpload(PostPersistEvent $event)
{
    $file = $event->getFile();
    $response = $event->getRequest();

    $object = new Photo();
    $object->setOriginal($file->getPathName());

    var_dump($response);enter code here
    //$this->manager->persist($object);
    //$this->manager->flush();
}
}

您可以創建一個自定義命名器 ,該命名器將不僅用於命名文件,還用於創建動態文件夾結構。 在跟蹤器中查看此問題

namespace AppBundle\Uploader\Naming;

use Oneup\UploaderBundle\Uploader\File\FileInterface;
use Oneup\UploaderBundle\Uploader\Naming\NamerInterface;

class CatNamer implements NamerInterface
{
    public function name(FileInterface $file)
    {
        $product = //...
        return sprintf('%d/%s', $product->getId(), grumpycat.jpg);
    }
}

由於這是一項服務,因此您可以添加request_stack作為參數,並根據用戶提交的選擇創建目錄結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM