2017-07-06 9 views
2

私はこれを試してきましたが、私はSymfony Eventsやものを初めて知ったので混乱しています。symfony 2のOneUpUploaderBundleとjQuery-File-Upload

私がこれまで持っている場所です:

  • 作曲バンドルのインストール
  • AppKernel.php、のrouting.yml、services.yml、config.yml、UploadListener.phpファイルの変更

そして、それは動作しますが、私が入れたファイルは実際のフォルダにアップロードされている、と私は、ステータスバーの充填を得た...しかし、私は何か他のものが必要になります。

  1. どういうわけか、ファイルと共にアイテムid(整数)を投稿(および読み込み)する必要があります(または、出力フォルダにファイルをコピーするときにファイル名を設定できるようにする必要があります)。
  2. アップロード、エラーメッセージを返信するにはどうすればよいですか?
  3. 例(jQuery-File-Uploader)は、アップロードされたファイルのファイル名を返します。私のコードはそれをしません。コードはありますが、機能しません。

私が持っているコードを投稿しています。

HTMLコード(ここでは、私は他のファイル(AppKernel

<script> 
    /*jslint unparam: true */ 
    /*global window, $ */ 
    var idFile = 0; 
    $(function() { 
     'use strict'; 
     // Change this to the location of your server-side upload handler: 
     $('.fileupload').fileupload({ 
      url: '{{ oneup_uploader_endpoint('xlsfile') }}', 
      dataType: 'json', 
      done: function (e, data) { 
       var eventTrigger = $(this) 
       idFile = eventTrigger.data('id') 
       $.each(data.result.files, function (index, file) { 
        $('#files_'+idFile).html(file.name); 
       }); 
      }, 
      progressall: function (e, data) { 
       var eventTrigger = $(this) 
       idFile = eventTrigger.data('id') 
       var progress = parseInt(data.loaded/data.total * 100, 10); 
       $('#progress_'+idFile+' .progress-bar').css(
         'width', 
         progress + '%' 
       ); 
      }, 
      formData: [ {"id":idFile} ] 
     }).prop('disabled', !$.support.fileInput) 
       .parent().addClass($.support.fileInput ? undefined : 'disabled'); 
     // 
    }); 
</script> 

( "各" の文章は、何もしない)JSスクリプト

<tr> 
        <td>{{ clienteCorporativo.nombreComercial|upper }}</td> 
        <td>{% if clienteCorporativo.afiliadosUploads|length == 0 %}Nunca{% else %}{{ (clienteCorporativo.afiliadosUploads|last).fecha|date('d/mmm/y') }}{% endif %}</td> 
        <td> 
         {% if clienteCorporativo.formatoExcelAfiliados == null %} 
          <span class="btn btn-success fileinput-button"> 
           <i class="glyphicon glyphicon-upload"></i>&nbsp;&nbsp;&nbsp; 
           <span>Seleccionar Excel</span> 
           <input id="fileupload_{{ clienteCorporativo.id }}" class="fileupload" data-id="{{ clienteCorporativo.id }}" type="file" name="files[]" multiple> 
          </span> 
          {#<span style="color: #8c8c8c"><span class="glyphicon glyphicon-upload"></span>&nbsp; Seleccionar Excel &nbsp;&nbsp;&nbsp;</span>#} 
         {% else %} 
          <input id="fileupload_{{ clienteCorporativo.id }}" class="fileupload" type="file" name="files[]" data-url="{{ oneup_uploader_endpoint('gallery') }}" /> 
          {#<a role="button" data-toggle="modal" data-target="#myModal" data-operation="loadOne" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-upload"></span>&nbsp; Seleccionar Excel</a> &nbsp;&nbsp;&nbsp;#} 
         {% endif %} 
         <a role="button" data-toggle="modal" data-target="#myModal" data-operation="defineFormat" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-list-alt"></span>&nbsp; Definir Formato</a> &nbsp;&nbsp;&nbsp; 
         {% if clienteCorporativo.afiliadosUploads|length == 0 %} 
          <span style="color: #8c8c8c"><span class="glyphicon glyphicon-repeat"></span>&nbsp; Revertir Última Carga &nbsp;&nbsp;&nbsp;</span> 
         {% else %} 
          <a role="button" data-toggle="modal" data-target="#myModal" data-operation="undoLast" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-repeat"></span>&nbsp; Revertir Última Carga</a> &nbsp;&nbsp;&nbsp; 
         {% endif %} 
        </td> 
        <td> 
         <div id="progress_{{ clienteCorporativo.id }}" class="progress text-center"> 
          <div class="progress-bar progress-bar-success"> 
           <span id="files_{{ clienteCorporativo.id }}"></span> 
          </div> 
         </div> 
        </td> 
       </tr> 

jQueryの - ファイルアップロードを呼ぶ作品があります.php、routing.yml、services.yml、config.yml、UploadListener.php)は、OneupUploaderBundleのドキュメントに書かれているように(私は思った結果が得られなかったので事を変更してからロールバックしました)私はこの1つを飲み込むことができるより多くを噛んだ...

+0

それぞれが何もしない場合は、 'data.result.files'をダンプし、そこにループが存在するかどうかを再確認してください。 –

+0

@SamJanssens何もありません。私はこれが動作するためにバックエンドで何かをしなければならないと思います。 –

答えて

1

あなたのフォームフィールドはファイルのアップロードとともに掲示されます。または、$('#myFile').fileUploader()コンストラクタでform_data: {}オプションを使用することもできます。しかし、デフォルトでフォームフィールドを送信し、通常の方法でフォームフィールドを処理できます。

$('#myFile').fileupload({ 
    dataType: 'json', 
    formData: { 
     'file_id': 1 
    }, 

アップロードリスナーで独自のリターンレスポンスを作成する必要があります。次に、結果をフロントエンド(Javascript)で解析します。

$response = $event->getResponse(); 
$response['success'] = true; 
$response['files'] = [ 
    'file' => [ 
     'name' => $event->getFile()->getPathname() 
    ] 
]; 
return $response; 
+0

ありがとうございました...それは美しく働きました... –

関連する問題