0

OneupUploaderBundle を使用してファイルをアップロードしようとしていますが、ほとんどすべてが機能していますが、ファイルがアップロードされず、問題がどこにあるのかわかりません。これが私のUploadLister見た目です:

namespace AppBundle\EventListener;

use Oneup\UploaderBundle\Event\PostUploadEvent;
use Oneup\UploaderBundle\Event\PreUploadEvent;
use AppBundle\Entity;

class UploadListener
{
    protected $doctrine;
    protected $originalName;
    protected $tipoRecaudo3;
    protected $tipoRecaudo4;
    protected $tipoRecaudo5;

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

    public function onUpload(PreUploadEvent $event)
    {
        $file = $event->getFile();
        $response = $event->getResponse();

        $this->originalName = $file->getClientOriginalName();
        $this->tipoRecaudo3 = $event->getRequest()->get('tipoRecaudo3', null);
        $this->tipoRecaudo4 = $event->getRequest()->get('tipoRecaudo4', null);
        $this->tipoRecaudo5 = $event->getRequest()->get('tipoRecaudo5', null);

        $url = "";
        $deleteUrl = "";

        $response['files'] = [
            'name' => $file->getClientOriginalName(),
            'size' => $file->getSize(),
            'url' => $url,
            'deleteUrl' => $deleteUrl,
            'deleteType' => 'DELETE'
        ];
    }

    public function onPostUpload(PostUploadEvent $event)
    {
        $em = $this->doctrine->getManager();
        $request = $event->getRequest();

        $productoSolicitud = $em->getRepository('AppBundle:ProductoSolicitud')->find($request->getSession()->get('productoSolicitudId'));

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

        if ($this->tipoRecaudo3 !== null)
        {
            $recaudosTramiteId = $this->tipoRecaudo3;
        } else if ($this->tipoRecaudo4 !== null)
        {
            $recaudosTramiteId = $this->tipoRecaudo4;
        } elseif ($this->tipoRecaudo5 !== null)
        {
            $recaudosTramiteId = $this->tipoRecaudo5;
        }

        $recadudoTramite = $em->getRepository('AppBundle:RecaudosTramite')->find($recaudosTramiteId);
        $recaudosTramiteProductoSolicitud->setRecaudosTramite($recadudoTramite);

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

エンティティは BD に永続化されるため、機能します。これは、バンドルの構成がどのように見えるかconfig.ymlです。

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

            use_orphanage:        true
            enable_progress:      true
            enable_cancelation:   true
            namer:                oneup_uploader.namer.uniqid

そしてTwigテンプレートレベルでは、これは私が持っているものです:

<form id="cargaRecaudos3" action="" method="POST" enctype="multipart/form-data" class="form-horizontal" role="form">
<input id="fileUpload3" class="fileUpload" type="file" name="fileUpload3[]" data-url="{{ oneup_uploader_endpoint('recaudos') }}" multiple />
</form>

もちろん、コンポーネントは jQuery レベルで初期化されます。

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

ファイルがアップロードされない理由はありますか? VichUploader バンドル内の同じフォルダーを使用していますが、それらのファイルはアップロードされているため、アクセス許可は問題にならない可能性があります。アイデアはありますか?

編集

私はここdie('meep')に言うように書いて、応答はダイを返しますが、ファイルはまだアップロードされていません。これに関するアドバイスはありますか?

4

2 に答える 2

1

初め

このバンドルを初めて実行する場合は、すべての人が行うエラーが頻繁に発生します。フォルダーに書き込みwebできるかどうかを確認してください...

2番

次のように、バンドルの設定をシンプルにするようにしてください。

oneup_uploader:
    mappings:
        recaudos:
            frontend: blueimp 
            enable_progress: true 
于 2014-12-03T04:19:20.820 に答える
0

コードを簡単に確認したところ、#JavaScript コードに欠落が見つかりました。

$(document).ready(function(){
    $('#fileUpload3').fileupload(); // the missing # is here
});
于 2014-12-03T03:54:14.193 に答える