2

私は Symfony2 を使用しており、BlueImp プラグインの基本セットアップを使用したいと考えています。

実は、3枚の写真と1曲をロードできるフォームがあります(アーティスト登録用です)。

まず、1 つの画像に対してプラグインを実装してみます。しかし、入力「picture 1」でファイルを選択すると、何も起こりません..何が問題なのですか?

<html>
 <head>
    <script type="text/javascript"  src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/vendor/jquery.ui.widget.js') }}"></script>
    <script type="text/javascript"  src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/jquery.iframe-transport.js') }}"></script>
    <script type="text/javascript"  src="{{ asset('bundles/mybundle/js/jquery-file-upload/js/jquery.fileupload.js') }}"></script>
  </head>


 <form id="myForm" action="{{ path('MyBundle_artist_new') }}" {{ form_enctype(form) }} method="post" novalidate>
     <div class="field">
        {{ form_label(form.picture1 "Picture 1") }}
        {{ form_widget(form.picture1) }}
      </div>
      <input type="submit" value="Register"/>
</form>

<script type="text/javascript">

$(document).ready(function(){

    $('#myform_picture1').fileupload(
    {
        dataType: 'json',
        url:'{{path('MyBundle_ajax_upload_picture') }}',
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo(document.body);
            });
        }
    });
  });
</script>

アップロード ハンドラー(URL {{path('MyBundle_ajax_upload_picture') }} のアクション:

<?php

    public function ajaxUploadPicture()
    {
        $request = $this->get('request');
        $uploaded_file = $request->files->get('myform_picture1');

        if ($uploaded_file) 
        {
            $picture1 = $this->processImage($uploaded_file);
            $picture1->setPath('pictures/artist/' . $picture1);
            $em->persist($picture1);
            $em->flush();

            $response = 'success';
        }

        else $response= 'error';

        $response = new Response(json_encode(array('response'=>$response)));
        $response->headers->set('Content-Type', 'application/json');
        return $response;
    }

    public static function processImage(UploadedFile $uploaded_file)
    {
        $path = 'pictures/artist/';
        $uploaded_file_info = pathinfo($uploaded_file->getClientOriginalName());
        $filename = uniqid() . "." .$uploaded_file_info['extension'];

        $uploaded_file->move($path, $filename);

        return $filename;
    }
4

1 に答える 1

1

ajax リクエストから取得したものを確認する必要があります。例:

$('#myform_picture1').fileupload(
{
    dataType: 'json',
    url:'{{path('MyBundle_ajax_upload_picture') }}',
    done: function (e, data) {
        $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);
        });
    },
    always: function (e, data) {
       console.log(data);
    }
});

この行についてはわかりません$uploaded_file = $request->files->get('myform_picture1'); が、ファイルの入力名がmyform_picture1?

してみてください$uploaded_file = $request->files->get('myform[picture1]', array(), true);

于 2013-02-14T11:11:55.143 に答える