OneupUploaderBundle: файлы не загружаются, а UploadListener не сохраняется в БД, почему?

Я пытаюсь загрузить один или несколько файлов, используя OneupUploaderBundle но я не могу заставить его работать, так как файлы не загружены и ничего не сохраняется в БД. Я объясню, что я сделал до сих пор:

config.yml:

oneup_uploader:
mappings:
recaudos:
frontend: blueimp
storage:
service:              ~
type:                 filesystem
filesystem:           ~
directory:            %kernel.root_dir%/../web/uploads/recaudos
stream_wrapper:       ~
sync_buffer_size:     100K
allowed_mimetypes:     [application/msword,image/jpeg,image/pjpeg,image/png,application/pdf,application/vnd.oasis.opendocument.text]
#disallowed_mimetypes:  []
error_handler:        oneup_uploader.error_handler.noop

# Set max_size to -1 for gracefully downgrade this number to the systems max upload size.
#max_size:             9223372036854775807
use_orphanage:        true
enable_progress:      true
enable_cancelation:   true
namer:                oneup_uploader.namer.uniqid

У Twig шаблон только такой:

<input id="fileUpload3" class="fileUpload" type="file" name="fileUpload3[]" data-url="{{ oneup_uploader_endpoint('recaudos') }}" multiple />

$(document).ready(function(){
$('fileUpload3').fileupload();
});

И последний это Слушатель для onUpload событие:

namespace AppBundle\EventListener;

use Oneup\UploaderBundle\Event\PostPersistEvent;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity;

class UploadListener
{
protected $doctrine;

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

public function onUpload(PostPersistEvent $event, Request $request)
{
$session = $request->getSession();
$em = $this->doctrine->getManager();
$request = $event->getRequest();
$tempfile = $event->getFile();

$productoSolicitud = $em->getRepository('SolicitudProducto')->find($session->get('productoSolicitudId'));

$recaudosTramiteProductoSolicitud = new Entity\RecaudosTramitesProductoSolicitud();
$recaudosTramiteProductoSolicitud->setProductoSolicitud($productoSolicitud);

$filenamePart = explode("--", $tempfile->getName());
$pathinfo = pathinfo($tempfile->getName());
$recaudosTramiteProductoSolicitud->setArchivo($pathinfo['filename']);

$em->persist($recaudosTramiteProductoSolicitud);
$em->flush();
}
}

И, конечно же, я определил также сервис:

appbundle.upload_listener:
class: "AppBundle\EventListener\UploadListener"arguments:  [@doctrine]
tags:
- { name: 'kernel.event_listener', event: "oneup_uploader.post_persist", method: "onUpload" }

Я что-то пропустил? Почему файл не загружен, а данные не сохранены? Как вы можете видеть на прикрепленном изображении, есть запрос к _uploader/recaudos/upload, любой совет?

введите описание изображения здесь

1

Решение

Я только что проверил свою собственную реализацию OneupUploader:

Переименуйте вашу функцию «onUpload» в «onPostUpload» и измените конфигурацию вашей службы следующим образом:

appbundle.upload_listener:
class: "AppBundle\EventListener\UploadListener"arguments:  [@doctrine]
tags:
- { name: 'kernel.event_listener', event: oneup_uploader.post_upload, method: onPostUpload }

Должен работать, у меня работает.

Если вам нужно ваше исходное имя файла, вам также нужен метод onUpload, и это:

tags:
# - {...
- { name: kernel.event_listener, event: oneup_uploader.pre_upload, method: onUpload }

По поводу вашего комментария:

// UploadListener

class UploadListener
{
protected $originalName;

public function onUpload(PreUploadEvent $event)
{
$file = $event->getFile();
$this->originalName = $file->getClientOriginalName();
}

public function onPostUpload(PostUploadEvent $event)
{
$fileEntity = new YourFileEntity();
$fileEntity->setYourOriginalNameProperty($this->originalName);
//...
}

}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]