Я использую OneupUploaderBundle с загрузкой файла jQuery для загрузки фотографий в приложение SF2.Custom name & custom directory - OneupUploaderBundle
Читая документ здесь: https://github.com/1up-lab/OneupUploaderBundle простая загрузка работает и каждые фото я загружать сохраненные в папке/веб/загрузки/галерея с уникальным сгенерированным именем (uniqid() я предполагаю)
То, что я хочу сделать это: изменить папку и/или имя файла в соответствии с тем, что пользователь выбрал в форме (из списка выбраны варианты выбора).
Для этого необходимо:
Передача данных во время вызова AJAX
Получение данных в Symfony (я использую слушателя PostPersistEvent как предложено здесь https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/custom_logic.md)
- использовать пользовательские неймер (https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/custom_namer.md)
Но дело в том, что Я не знаю, как получить, что пользователь выбрал в моем 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();
}
}