Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 3.1和OneUploaderBundle&x2B;Blueimp=未调用UploadListener 介绍_Php_Jquery_Symfony_Blueimp_Oneupuploaderbundle - Fatal编程技术网

Php Symfony 3.1和OneUploaderBundle&x2B;Blueimp=未调用UploadListener 介绍

Php Symfony 3.1和OneUploaderBundle&x2B;Blueimp=未调用UploadListener 介绍,php,jquery,symfony,blueimp,oneupuploaderbundle,Php,Jquery,Symfony,Blueimp,Oneupuploaderbundle,大约两周前,我用OneupUploaderBundle创建了类似的关于上传的问题,但是使用了库。遗憾的是,目前还没有答案。 同时,我尝试设置不同的上传库 我正在使用XAMPP[1]开发windows10pro,其中包括phpv7.0.8 [1] 我正在使用Symfony v3.1.5,以便将文件上载到服务器 在设置过程中,我遵循了oneuploaderbundle[2]和jQuery file upload[3]、[4]的文档 [2] [3] [4] 问题 我想把文件上传到某个目录,然后

大约两周前,我用
OneupUploaderBundle
创建了类似的关于上传的问题,但是使用了库。遗憾的是,目前还没有答案。 同时,我尝试设置不同的上传库

我正在使用
XAMPP
[1]开发
windows10pro
,其中包括
phpv7.0.8

  • [1]
我正在使用Symfony v3.1.5,以便将文件上载到服务器

在设置过程中,我遵循了
oneuploaderbundle
[2]和
jQuery file upload
[3]、[4]的文档

  • [2]
  • [3]
  • [4]
问题 我想把文件上传到某个目录,然后检查它们的mime类型,验证是否允许上传,然后-将它们移动到自定义目录(可以在不同的文件之间更改),最后我想将文件路径和文件名持久保存到数据库

文件上传工作正常,文件上传到
oneup\u uploader\u端点('gallery')
。甚至自定义文件
Namer
也可以工作并允许上传到自定义目录

但是,侦听器不被调用(上载侦听器和验证),并显示在Symfony Profiler事件部分
不被调用的侦听器中

这很不幸,因为我想使用
Post\u Persist
event将有关文件的信息保存到数据库中

代码 我的服务

services:
    app.upload_listener:
        class: AppBundle\EventListener\UploadListener
        arguments: ["@doctrine.orm.entity_manager"]
        tags:
            - { name: kernel.event_listener, event: oneup_uploader.post_persist.default_uploader, method: onUpload }
            - { name: kernel.event_listener, event: oneup_uploader.post_persist.default_uploader, method: onPostUpload }

    app.upload_unique_namer:
        class: AppBundle\Uploader\Naming\UploadUniqueNamer
        arguments: ["@session"]
我的自定义姓名

<?php

namespace AppBundle\Uploader\Naming;

use Oneup\UploaderBundle\Uploader\File\FileInterface;
use Oneup\UploaderBundle\Uploader\Naming\NamerInterface;
use Symfony\Component\HttpFoundation\Session\Session;

class UploadUniqueNamer implements NamerInterface
{
    private $session;

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

    /**
     * Creates a user directory name for the file being uploaded.
     *
     * @param FileInterface $file
     * @return string The directory name.
     */
    public function name(FileInterface $file)
    {
        $upload_files_path = $this->session->get('upload_files_path');
        $unique_name = uniqid();

        return sprintf('%s/%s_%s',
            $upload_files_path,
            $unique_name,
            $file->getClientOriginalName()
        );
    }
}
我的上载侦听器:

<?php

namespace AppBundle\EventListener;

use Oneup\UploaderBundle\Event\PreUploadEvent;
use Oneup\UploaderBundle\Event\PostUploadEvent;
use Oneup\UploaderBundle\Event\PostPersistEvent;
use Doctrine\ORM\EntityManager;
use AppBundle\Entity\Product;

class UploadListener
{
    /**
     * @var EntityManager
     */
    private $entityManager;

    //protected $originalName;

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

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

    public function onPostUpload(PostPersistEvent $event)
    {
        $file = $event->getFile();

        $object = new Product();
        $object->setName($file->getClientOriginalName());
        //$object->setName($file->getPathName());

        $this->entityManager->persist($object);
        $this->entityManager->flush();
    }
}

只需收听正确的事件。
事件交换包含映射的名称,以便您可以实现此映射的特定逻辑,而不会影响其他映射

将事件转换为此格式

oneup_uploader.post_upload.{mapping}
在你的情况下,它会

oneup_uploader.post_upload.gallery
欲了解更多信息,请阅读

是的,看来问题在于我的服务配置错误。实际上,
oneup\u uploader.post\u persist.gallery
而不是
…default\u uploader
可以工作。奇怪的是,
…default\u uploader
是PHPStorm提供的唯一自动完成的项目。同时,事件仍然显示在Event Dispather
Not Called Listeners
部分中,尽管我可以确认现在触发了事件,并且可以将有关文件的信息保存到数据库中。再次感谢。
oneup_uploader.post_upload.{mapping}
oneup_uploader.post_upload.gallery