2015-06-06 3 views
0

Я использую OneupUploaderBundle с загрузкой файла jQuery для загрузки фотографий в приложение SF2.Custom name & custom directory - OneupUploaderBundle

Читая документ здесь: https://github.com/1up-lab/OneupUploaderBundle простая загрузка работает и каждые фото я загружать сохраненные в папке/веб/загрузки/галерея с уникальным сгенерированным именем (uniqid() я предполагаю)

То, что я хочу сделать это: изменить папку и/или имя файла в соответствии с тем, что пользователь выбрал в форме (из списка выбраны варианты выбора).

Для этого необходимо:

Но дело в том, что Я не знаю, как получить, что пользователь выбрал в моем namer или изменить каталог загрузки, можете ли вы мне помочь?

Благодаря

Front-END 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(); 
} 
} 

ответ

0

Вы можете создать custom namer, который будет использоваться не только имя файла, но также для создания динамической структуры папок. Взгляните на this issue в трекер.

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 в качестве параметра и создать структуру каталогов на основе выбора пользователи отправляют.