php
  • jquery
  • ajax
  • symfony
  • 2015-07-01 15 views 6 likes 
    6

    Mam problem z przesłaniem pliku z formularza do kontrolera Symfony2 przez ajax.Przesyłanie plików za pomocą ajax i Symfony2

    To moja forma od strony klienta:

    var uploadFile = function() { 
    var content = "<form id='uploadFile' enctype='multipart/form-data' action='' method='post'>" + 
         "<input id='file' type='file'/>" + 
         "</form>"; 
    $("#upload-dialog").html(content); 
    $("#upload-dialog").dialog({ 
        resizable: false, 
        title: 'Dodaj załączniki do umowy', 
        height: 300, 
        width: 450, 
        buttons: [ 
         { 
          text: 'Wyślij', 
          click: function() { 
           var formData = new FormData(); 
           formData.append('file', document.getElementById('file').files[0]); 
           $.ajax({ 
            url: Routing.generate('employees_upload_attachment'), 
            data: formData, 
            enctype: 'multipart/form-data', 
            processData: false, 
            contentType: false, 
            success: function() { 
            }, 
            error: function() { 
    
            } 
           }); 
          } 
         } 
        ] 
    }); 
    

    };

    i to jest mój kontroler

    public function uploadAttachmentAction(Request $request) { 
        $fileBag = $request->files; 
        var_dump($fileBag); 
    } 
    

    Kiedy próbuję pokazać dodany plik dostaję pustą FileBag obiektu:

    obiekt (Symfony \ Komponent \ HttpFoundation \ FileBag) # 12 (1) {
    [ "parametry": protected] => array (0) {}}

    co może być źle?

    EDIT: Rozwiązałem it.I dodany do parametrów jquery ajax

    cache: false, typu: 'POST'

    i wszystko jest ok :)

    +0

    Czy próbowałeś zalogować się wartości 'document.getElementById ('file'). Files [0]'? – colinD

    +0

    Tak, wygląda dobrze. – math

    +0

    Rozwiązałem ten problem. Dodałem do parametrów ajax: cache: false i type: 'POST'. Teraz wszystko jest w porządku :) – math

    Odpowiedz

    0

    Dodawanie ajax paramaters:

    cache: false, 
    type: 'POST' 
    

    Rozwiązany problem.

    Uwaga: Odpowiedź jest oparta na komentarzu nie moim, ponieważ pojawia się w sekcji "bez odpowiedzi".

    Powiązane problemy